PythonのDataclassは、クラスベースのデータを簡単に扱うための強力なツールです。特に、フィールド(クラス変数)の値を取得する方法は、Dataclassの中心的な機能の一つです。
フィールド値の取得
Dataclassのフィールド値を取得する基本的な方法は、そのフィールドの名前を使ってアクセスすることです。例えば、次のようなDataclassがあるとします。
from dataclasses import dataclass
@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0
この場合、InventoryItem
のインスタンスを作成し、そのフィールド値を取得することができます。
item = InventoryItem('widget', 3.0, 10)
print(item.name) # 'widget'
print(item.unit_price) # 3.0
print(item.quantity_on_hand) # 10
フィールド値の生成
Dataclassでは、フィールド値を動的に生成することも可能です。これは、__post_init__
メソッドを使用して行います。このメソッドは、Dataclassのインスタンスが初期化された直後に自動的に呼び出されます。
from dataclasses import dataclass, field
@dataclass
class WordItem:
id: str = field(init=False)
phrase: str
word_type: str
def __post_init__(self):
self.id = f'{self.phrase}_{self.word_type.lower()}'
この例では、id
フィールドはphrase
とword_type
から動的に生成されます。
フィールドの一覧取得
Dataclassの全フィールドを一覧する方法もあります。これは、dataclasses.fields
関数を使用して行います。
from dataclasses import dataclass, fields
@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0
item = InventoryItem('widget', 3.0, 10)
print([field.name for field in fields(item)]) # ['name', 'unit_price', 'quantity_on_hand']
このように、PythonのDataclassは、フィールド値の取得や生成、一覧表示など、データ操作を容易にするための多くの便利な機能を提供しています。