matobaの備忘録

育児しながら働くあるエンジニアの記録

Pythonのdataclassをdictにしたい

asdictってのがあったんですね、ということに気づいたので、その簡単なシェア。

docs.python.org

>>> from dataclasses import dataclass
>>> @dataclass
... class MyClass:
...     hoge: str
...     fuga: str
...     piyo: str
...
>>> myobj = MyClass(hoge="ホゲホゲ", fuga="フガフガ", piyo="ぴよぴよ")
>>> from dataclasses import asdict
>>> asdict(myobj)
{'hoge': 'ホゲホゲ', 'fuga': 'フガフガ', 'piyo': 'ぴよぴよ'}

個人的には、以下のようなメソッドを予想していたけど、関数だったようだ。

>>> myobj.asdict()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'MyClass' object has no attribute 'asdict'