Check

Dataclasses vs обычные классы

Python Senior Яндекс
Объясните, что даёт `@dataclass` по сравнению с обычным классом. Какие подводные камни есть при использовании изменяемых значений по умолчанию?
Ответы
Dataclasses
`@dataclass` автоматически генерирует `__init__`, `__repr__`, `__eq__` и опционально другие методы на основе аннотированных полей. Это уменьшает шаблонный код для «контейнеров данных». Опасность изменяемых значений по умолчанию: ```python from dataclasses import dataclass @dataclass class Config: flags: list = [] # одна и та же list для всех экземпляров! ``` Правильно использовать `default_factory`: ```python from dataclasses import field @dataclass class Config: flags: list = field(default_factory=list) ```