Python для продвинутых: ООП, типизация и тестированиеОткрытые материалыDataclass, NamedTuple или обычный класс в Python

Dataclass, NamedTuple или обычный класс в Python

Уроки курсаDataclass, NamedTuple или обычный класс в Python

@dataclass генерирует служебные методы для класса, описанного аннотациями: обычно __init__, __repr__ и __eq__. Это уменьшает шаблонный код, но оставляет полноценный класс с методами и явным поведением.

from dataclasses import dataclass

@dataclass(frozen=True, slots=True)
class Point:
    x: float
    y: float

    def distance_squared(self) -> float:
        return self.x ** 2 + self.y ** 2

frozen=True запрещает обычное изменение полей после создания, а slots=True может уменьшить память и запретить случайные новые атрибуты. Это настройки контракта, а не универсальные ускорители.