「データクラス」への期待

これの続き。

Pythonのdictは柔軟で扱いやすいが、一方で値の型が把握しづらい(注1)。他人が書いたコードは言わずもがな、自分の書いたそれもすぐ忘れて「?」となる。またその入れ子やら新たなキーの追加や削除やらも容易だが、こういうの(注2)をやりだすと状況は更に悪化する。Cの構造体のようなカッチリとしたデータ構造を記述するにはどうしたら良いのか? Python3.7から導入された「データクラス」は、そうした要望に対する回答のひとつである。

何よりdictではできない「継承」が使えるだけでも有り難い。実をいうとその存在に気づくまで、俺は通常のクラスでこれをやっていた。そういう意味では「データクラス=データ保持に特化したクラス」と捉えて差し支えない(注3)が、便利な機能が多数盛り込まれているので「これからは遍くこれで」と考えている。

惜しいかな現時点ではクラス変数に不正な型を代入しても動いてしまうし、PyCharmでも警告が出ない。が、これらが実現されるのはそう遠い先の事ではないと思う。尤もそうなるともはやPythonは「動的片付き言語」と呼べなくなるのでは? だが、俺的にはその方がずっといい。

注1: 変数では有効なtypehintがdictのキーには使えない
注2: Pythonに限った話ではなくPHPとかJavascriptとかも同様である
注3: 実際データクラスはclassへのデコレータで記述する