Pythonのdataclass
は、主にデータを格納するために使用されるシンプルなクラスを定義する方法を提供します。@dataclass
デコレータを使用してデータクラスを定義すると、クラスにはいくつかのメソッドが自動的に生成されます。その中には__init__()
メソッドも含まれます。
例えば、以下のようなコードを考えてみましょう。
from dataclasses import dataclass
@dataclass
class InventoryItem:
"""Class for keeping track of an item in inventory."""
name: str
unit_price: float
quantity_on_hand: int = 0
def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand
このコードでは、InventoryItem
クラスに__init__()
メソッドが自動的に追加されます。このメソッドは以下のようになります。
def __init__(self, name: str, unit_price: float, quantity_on_hand: int = 0):
self.name = name
self.unit_price = unit_price
self.quantity_on_hand = quantity_on_hand
このメソッドはクラスに自動的に追加され、InventoryItem
の定義には直接指定されていません。
dataclass
デコレータは、__init__()
メソッドだけでなく、__repr__()
メソッドも自動的に生成します。これにより、クラスのインスタンスをprint()
やrepr()
に渡すと、クラス名と各フィールドの名前とrepr
が含まれた文字列が生成されます。
また、dataclass
デコレータは、__eq__()
と__ne__()
メソッドも自動的に生成します。これにより、クラスのインスタンス同士を等号で比較することが可能になります。
以上がPythonのdataclass
と__init__()
メソッドの基本的な使い方となります。この機能を活用することで、Pythonでのクラス定義がより簡単になり、コードの可読性も向上します。