Pythonのdataclasses
モジュールは、データを格納するためのクラスを定義し、データ格納クラスのための様々な機能を含んだモジュールです。このモジュールはPython3.7から追加されました。
dataclasses
モジュールを用いたデータ格納クラスを作成するために必要なことは、基本的に以下の3つです。
dataclasses.dataclass
デコレータをクラス宣言に付与- データフィールドを クラス変数として記述する
- データフィールドのクラス変数に 型アノテーションを記述する
例えば以下のようにデータクラス Person
を定義します。
from dataclasses import dataclass
@dataclass
class Person():
first_name: str
last_name: str
age: int
このようにdataclass
を定義すると、以下のような __init__()
関数がデータクラスに対して自動で作成されます。
def __init__(self, first_name: str, last_name: str, age: int):
self.first_name = first_name
self.last_name = last_name
self.age = age
クラス変数定義の後ろに”= value”とすることで初期値を設定することが出来ます。str, intなどの場合はそのまま”=”の後に空文字など指定すれば良いですが、listやset、dictなどのデフォルト値を設定する場合は dataclasses.field
を使用する必要があります。
例えばlist型のフィールドに初期値を設定する場合は dataclasses.field
関数の引数に default_factory
を指定する必要があります。
from dataclasses import dataclass, field
@dataclass
class Person():
first_name: str = ''
last_name: str = ''
age: int = 0
family: list = field(default_factory=list)
このようにPythonのdataclasses
モジュールを使用すると、データ格納クラスの定義がシンプルになり、初期値の設定も容易になります。