Python для продвинутых: ООП, типизация и тестированиеОткрытые материалыDataclass, NamedTuple или обычный класс в Python
Dataclass, NamedTuple или обычный класс в Python
Уроки курсаDataclass, NamedTuple или обычный класс в Python
Практический выбор
Используйте dataclass для внутренних value objects и DTO, когда поля известны, нужны понятный repr и сравнение. Используйте frozen dataclass для значений, которые не должны меняться после создания. NamedTuple уместен для компактной неизменяемой записи с необходимой совместимостью с tuple.
Аннотации dataclass сами по себе не валидируют типы во время выполнения. Передача строки в поле float не вызовет автоматическую ошибку. Для внешнего недоверенного ввода нужен отдельный валидатор или модель данных с runtime-проверкой.
Не выбирайте структуру только по числу строк кода. Важнее семантика: можно ли менять объект, должен ли он быть hashable, нужна ли tuple-совместимость и где проверяются инварианты.
