PythonのData Classes
PythonのdataclassはPython3.7からの機能となり、クラスを定義する際の__init__、__repr__、__eq__などの定義を自動で作成し省略できます。
使い方はクラス定義にdataclassデコレータをつけます。
from dataclasses import dataclass
@dataclass
class Example:
x: int = 0
y: int = 0
e = Example(x=1, y=2)
e.x >> 1
e.y >> 2
このように使うことで自分で__init__を定義する必要がなくなります。
普通のクラスのように__init__で処理を行う場合には__post_init__と定義し、処理を書く事ができます。
@dataclass
class Example:
x: int = 0
y: int = 0
c: InitVar[int] = 0
def __post_init__(self, c):
self.x = c
self.y = c + 1
e = Example(c=1)
e.x >> 1
e.y >> 2
ここでdataclasses.InitVarと定義されたフィールドは__init__のみで使用され、クラスのフィールドとは認識されずインスタンスには保持されません。
Example(c=1)
>> Example(x=1, y=2)
この記事が気に入ったらサポートをしてみませんか?