Python Glossary English

Python 3.7+Исключенияисключение

dataclasses.FrozenInstanceError

модульные исключения

Попытка изменить поле frozen-dataclass (@dataclass(frozen=True)).

Синтаксис

raise dataclasses.FrozenInstanceError

Это подкласс AttributeError, поэтому широкий except AttributeError проглотит его незаметно — ловите именно FrozenInstanceError, если хотите отличить попытку записи в frozen-объект от опечатки в имени атрибута. И помните, что frozen=True запрещает только присваивание и удаление атрибутов самого объекта: список или словарь, лежащий в поле, по-прежнему меняется на месте, так что неизменяемость тут поверхностная. Чтобы получить объект с другим значением поля, делают изменённую копию через dataclasses.replace().

Примеры

import dataclasses
try:
    raise dataclasses.FrozenInstanceError
except dataclasses.FrozenInstanceError as e:
    print(type(e).__name__)   # → FrozenInstanceError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности