上から順に検討するのが良いかも? ■typing.NamedTuple [new in 3.6] https://docs.python.org/ja/3.11/library/typing.html#typing.NamedTuple ・名前付きの tuple なので軽い ・イミュータブル ・デフォルト値可能 ・アンパックで一括で値を設定する事が可能 ・多重継承はできない? ※自作メソッドを作れるができる限り作らない方が良い 操作メソッド _make(iterable), _asdict(), _replace(**kwargs) ※アンダースコア付きだけどprotectedではなくpublic扱いという特殊仕様 ■dataclasses.dataclass [new in 3.7] https://docs.python.org/ja/3.11/library/dataclasses.html#module-dataclasses ・__init__の記述を省略できるクラス ・イミュータブル化も可能 ・デフォルト値可能 ・アンパックで一括で値を設定する事が可能 ・slots=Trueのクラスからの多重継承はできない? ・特殊メソッドの生成の有無を指定できる ※自作メソッドを作れるができる限り作らない方が良い 自作メソッドが必要なら普通のクラスの採用も検討すること ■typing.TypedDict [new in 3.8] https://docs.python.org/ja/3.11/library/typing.html#typing.TypedDict ・構造が定義できるdict ・デフォルト値は不可能 ※dictを使っている既存プロジェクトで使用? ※json関連で使用
[Python 3.x] 構造の定義と型アノテーションに対応した単純なデータの入れ物
ラベル:
Python 3.x