Check
Как создать неизменяемый `dataclass`? Какие ограничения появляются при `frozen=True` и как при этом реализовать кеширование уже вычисленного значения (memoization) в поле?

frozen dataclass и кеш

Ответ 1 / 1

`@dataclass(frozen=True)` делает экземпляры неизменяемыми: любые попытки присвоить атрибуту новое значение приводят к `FrozenInstanceError`. Для ленивого кеширования можно использовать `object.__setattr__` (обход проверки) и приватное поле: ```python from dataclasses import dataclass, field @dataclass(frozen=True) class User: name: str _slug: str | None = field(default=None, init=False, repr=False) @property def slug(self) -> str: if self._slug is None: value = self.name.lower().replace(' ', '-') object.__setattr__(self, '_slug', value) return self._slug ```