Pythonのdataclass
は、特殊メソッドを自動的に生成し、ユーザー定義のクラスに追加するデコレータとして機能します。これにより、__init__()
や__repr__()
などのメソッドを手動で書く必要がなくなります。
from dataclasses import dataclass
@dataclass
class DataClass:
name: str
num: int
上記のように、@dataclass
デコレータを使用してクラスを定義すると、name
とnum
というフィールドを持つDataClass
というクラスが作成されます。このクラスのインスタンスは、以下のように作成できます。
dc = DataClass('tom', 3)
print(f'私の名前は{dc.name}、IDは{dc.num}です。') # 私の名前はtom、IDは3です。
dataclass
の利点は、self.name = name
などを繰り返さなくてもよく、記述量が低下し、かつアノテーションがついているので、どういう役割のクラスなのかがわかり、可読性が向上します。
また、dataclass
はデフォルト値を設定することも可能です。
@dataclass
class DataClass:
name: str = 'rebeca'
num: int = 4
上記のようにデフォルト値を設定した場合、引数なしでインスタンスを作成することができます。
dc = DataClass()
print(f'私の名前は{dc.name}、IDは{dc.num}です。') # 私の名前はrebeca、IDは4です。
以上がPythonのdataclass
の基本的な使い方となります。更に詳しく知りたい場合は、公式ドキュメントを参照してください。