対象バージョン Python 3.7以降 TL;DR dataclassでも __slots__ を使える __slots__ をつかうとpropertyの追加ができなくなる(自由度が下るが、コードをおいやすくなる) slots とは docs.python.org __slots__ を使うと、(プロパティのように) データメンバを明示的に宣言し、 (明示的に __slots__ で宣言しているか親クラスに存在しているかでない限り) __dict__ や __weakref__ を作成しないようにできます。 __dict__ を使うのに比べて、節約できるメモリ空間はかなり大きいです。 属性探索のスピードもかなり向上できます。 ということらしい。 dataclassの動作 dataclassを自分で使うときは私の用途だと関数の返り値/引数とかで使うときがおおいのでメモリ空間の節約できると便