Skip to content
11 / 15

Что такое `@dataclass` и какие параметры (`frozen`, `slots`, `field`, `__post_init__`) нужны на практике?

@dataclass генерирует __init__, __repr__, __eq__ по аннотациям полей. frozen=True делает экземпляр иммутабельным и хэшируемым; slots=True (3.10+) переключает на __slots__ — меньше памяти, нет __dict__. field(default_factory=...) обязателен для мутабельных дефолтов (list, dict). __post_init__ добавляет валидацию или производные поля после генерации __init__.

Что такое `@dataclass` и какие параметры (`frozen`, `slots`, `field`, `__post_init__`) нужны на практике? | JScriptiser