Проверяет понимание параметра frozen=True в dataclass, который делает экземпляры класса неизменяемыми.
Параметр frozen=True в декораторе @dataclass делает экземпляры класса неизменяемыми (immutable). Это означает, что после создания объекта его атрибуты нельзя изменить напрямую. Если попытаться присвоить новое значение полю, будет вызвано исключение FrozenInstanceError.
Когда frozen=True, dataclass автоматически генерирует методы __setattr__ и __delattr__, которые запрещают изменение или удаление атрибутов. Это похоже на использование namedtuple, но с большей гибкостью, так как можно добавлять методы и наследование.
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(1, 2)
print(p.x) # 1
# p.x = 3 # Ошибка: FrozenInstanceErrorИспользуйте frozen=True, когда нужно гарантировать неизменность данных после создания объекта. Это повышает безопасность и предсказуемость кода, особенно в многопоточных средах или при работе с конфигурациями.