Python実践入門 ── 言語の力を引き出し、開発効率を高める (WEB+DB PRESS plusシリーズ)
目次
- 目次
- はじめに
- 通常のclassとdataclassの比較
- dataclassの良いところ
- データを格納する箱であることを明確にできる。
- クラス定義を短くかける
- 型情報を書くことでデータ構造が見やすくなる。
- Printしたときに、そのままオブジェクトの中身を表示できる。
- asdict関数でdictに変換できる。(Dictから簡単にJSONにも変換できる)
- Dict(JSON)からdataclassを作ることもできる
- Frozen引数を使うことで、簡単にイミュータブルにもできる。
- データが作られたときに、自動後処理機能を追加することができる。
- dataclassの残念なところ
- コレクションの初期化
- dataclassの良いところ
- 参考資料
- MyEnigma Supporters
はじめに
C++ユーザやJuliaユーザがPythonを使っている時の不満の一つとして、
データを格納する目的のstructが無いことが上げられます。
もちろんPythonのclassを使って、データのみを格納することもできますが、
記述が冗長になりますし、コールドリーディングしているときに、
データを格納するためのclassなのか、
それともより汎用的なクラスなのかが、一見してわかりにくいことがあります。
そこでPython3.7から導入されたのが、dataclassです。
これを使えば、Pythonでも明示的にデータ格納用のクラスを簡単に実装できます。
また、下記のツイートの通り、アプリケーションの設定データ管理として、
このdataclassを使うと非常に便利です。
今回のPFN技術ブログすばらしい。"JSONを読み込んだDict[str, Any]をそのまま設定としてアプリの中で使い回すのはやめよう。dataclassなどを使って、型付きクラスにして、最初にチェックしよう" 心が痛い。 Practices for Working with Configuration in Python Applications https://t.co/ru3fAGixSL
— Atsushi Sakai (@Atsushi_twi) 2020年4月25日
今回の記事では、このdataclassの概要について説明したいと思います。
続きを読む