import dataclasses d = dataclasses.asdict(instance, *, dict_factory=dict)
instance
-экземпляр класса данных,dict_factory=dict
- фабричная функция.name: value
. Функция asdict()
модуля dataclasses
преобразует экземпляр класса данных instance
в словарь dict
, используя фабричную функцию dict_factory
.
Каждый класс данных преобразуется в словарь своих полей в виде пар name: value
. В классе данных, словари, списки и кортежи рекурсируются.
Если экземпляр instance
не является экземпляром класса данных, то вызывается ошибка TypeError
.
from dataclasses import dataclass, field @dataclass class Point: x: int y: int @dataclass class ListPoint: mylist: list = field(default=Point) >>> p = Point(10, 20) >>> p # Point(x=10, y=20) >>> assert asdict(p) == {'x': 10, 'y': 20} >>> listpoint = ListPoint([Point(0, 0), Point(10, 4)]) >>> listpoint # ListPoint(mylist=[Point(x=0, y=0), Point(x=10, y=4)]) >>> assert asdict(listpoint) == {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}