Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Pythonのdataclassでデータ構造のみを保存するクラスを用意

単にデータ(特に数値)を放り込む塊を作りたい場合、dataclassが使えます。

実際のところ

from dataclasses import dataclass

@dataclass
class Point:
     x: int 
     y: int = 10

pt = Point(x=10,y=19)

pt.x
#> 10
pt.y
#> 19

初期値設定のおかげで

 pt3 = Point(x=10)
pt3.x
#> 10
pt3.y
#> 0
pt4 = Point(80)
pt4.x
#> 80
pt4.y
#> 0

pythonなので型保障まではしてくれないので注意。

pt2 = Point(x="foo", y="bar")

pt2.x
#>'foo'
pt2.y
#> 'bar'

これだけだと旨味がない感じですが

pt5 = Point(80)
pt3 == pt5
#> False
pt5 == pt4
#> True

他にも安全にデータを使う方法が用意されていたり、tuple他のデータ型に変換する基礎にできたりします。

JSON型と相互変換

dataclasses-jsonというライブラリと併せてつかうとJSON形式と相互に読み替えができます
shuzo-kino.hateblo.jp