Python

【Python】脱辞書型! dataclassとenumで入れ子構造のデータ管理

2022年6月5日

※ 本ブログはプロモーションが含まれています

python-dataclass-enum_eye-catch

ポロシャツエンジニア

3分で技術が身に付くブログ!
・ポロシャツを愛するエンジニア
・企業にて研究開発職
・画像処理 | Deep Learning

おすすめの読者

  • 入れ子構造のデータを効率的に管理したい!
  • 辞書型での入れ子構造のデータ管理を脱したい!
  • ハイパーパラメータを構造的に管理したい!

【結論】dataclass と enumで入れ子構造でデータ管理

dataclassとenumを組み合わせて、効率的に入れ子構造のデータ管理を行います。

dataclassはデータ管理を目的としたクラスを定義するための機能です。

dataclasses --- データクラス — Python 3.9.12 ドキュメント
Python3.7からは「Data Classes」がクラス定義のスタンダードになるかもしれない - Qiita

enumは列挙型で識別子の集合を保持するための機能です。

enum --- 列挙型のサポート — Python 3.9.12 ドキュメント
enum 超まとめ python3.10 - Qiita

これらの機能を組み合わせることにより、
「入れ子構造のデータ」を列挙型にて管理することができます!

例えば、入れ子構造のハイパーパラメータを管理したいときに、役立てることができます!

下記Effective Pythonでは、dataclassの活用を含め、よりよいコーディングを行う技術が90項目紹介されています!
Pythonの初心者から、中級者・上級者にステップアップするのに、非常におすすめの1冊です!

【実装】dataclassとenumでの実装例

dataclassとenumにて入れ子構造を定義した場合、
既に属性の定義が済んでいるため、エディタのコード補完により各要素にアクセスが容易になります!

【比較】 辞書型での入れ子構造のデータの管理との比較

同じことを辞書型で実現する場合、辞書のキー名を取得 or 事前に把握する必要性があり、手間が発生します。
また、dataclassの機能を活用することで、入れ子構造のデータのミスタイプを発生させることなく、管理することができます。

【まとめ】dataclass と enumで入れ子構造でデータ管理

dataclassとenumを組み合わせて、効率的に入れ子構造のデータ管理うを行う方法を紹介しました。
下記Effective Pythonでは、dataclassの活用を含め、よりよいコーディングを行う技術が90項目紹介されています!
Pythonの初心者から、中級者・上級者にステップアップするのに、非常におすすめの1冊です!

初心者にはこちらがおすすめ!
中級・上級者にはこちらがおすすめ!
  • この記事を書いた人

ポロシャツエンジニア

3分で技術が身に付くブログ!
・ポロシャツを愛するエンジニア
・企業にて研究開発職
・画像処理 | Deep Learning

-Python