2018年8月10日金曜日

dataclassデコレータ

Python3.7 で追加されたdataclassデコレータについて。

__init__ を書かなくても済むのはいいけど、型情報を書く必要ある。
これは慣れていくしかないか...
というか、class の書き方もこのスタイルに変わってくるかも。

from dataclasses import dataclass

@dataclass
class Point:
    x: float
    y: float
    z: float = 0.0

p = Point(1.5, 2.5)
print(p)   # Point(x=1.5, y=2.5, z=0.0)
@dataclass(frozen=True) でイミュータブルになり、少しだけパフォーマンスが良くなると。


What’s New In Python 3.7
PEP 557 – Data Classes