Python 3.7+dataclassesпонятие
dataclasses
модуль
Декоратор @dataclass и функции к нему: класс-запись, которому __init__, __repr__ и __eq__ пишутся по аннотациям полей автоматически.
Синтаксис
from dataclasses import dataclass
Берите dataclasses, когда класс в основном хранит данные: поля объявляются аннотациями, а конструктор и сравнение появляются сами. Неизменяемая запись без методов — это namedtuple, проверка и разбор входных данных — уже не задача этого модуля: типы аннотаций он не проверяет. Частая ошибка — изменяемое значение по умолчанию: список задают через field(default_factory=list).
Примеры
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int = 0
print(Point(1)) # → Point(x=1, y=0)
print(Point(1, 2) == Point(1, 2)) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности