Python 3.7+dataclassesфункция
dataclasses.asdict
конвертация
Рекурсивно превращает экземпляр dataclass (и вложенные) в словарь.
Синтаксис
dataclasses.asdict(obj, *, dict_factory=dict)
Это не дешёвый снимок __dict__: asdict рекурсивно обходит вложенные датаклассы, списки, кортежи и словари, а всё остальное копирует через copy.deepcopy — на больших структурах это заметно дороже, чем кажется. Результат ещё не готов к json.dumps: datetime, Decimal, set и прочие объекты остаются собой, а поля ClassVar и InitVar в словарь не попадают. Если нужна просто плоская копия атрибутов, дешевле взять vars(obj).
Примеры
import dataclasses
@dataclasses.dataclass
class P:
x: int
y: int
print(dataclasses.asdict(P(1, 2))) # → {'x': 1, 'y': 2}
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности