Python Glossary English

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Сообщить о неточности