[Python 3.x] 構造の定義と型アノテーションに対応した単純なデータの入れ物

上から順に検討するのが良いかも?

■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関連で使用