Почему frozendict не замораживает вложенные объекты
В Python 3.15 появляется встроенный frozendict. В нём нельзя заменить значение по ключу или удалить запись. Но если значением служит список, сам список по-прежнему можно изменить через append.
Заморозка действует только на отображение. Поэтому frozendict с вложенным списком создаётся без ошибки, а вызов hash завершится TypeError. Для использования в ключе словаря или элементе множества все ключи и значения должны быть хешируемыми.
Есть ещё нюанс совместимости: frozendict не наследуется от dict. Проверка isinstance(value, dict) его отвергнет. Если функции достаточно чтения по ключам, контракт через collections.abc.Mapping принимает оба типа. Для вложенной структуры отдельно выбирайте подходящие контейнеры на каждом уровне.
#python #типизация
Post #5041
341
