Сообщить об ошибке.

Функция asdict() модуля dataclasses в Python

Преобразование класса данных в словарь

Синтаксис:

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}]}