Python 3.3+typesпонятие
types.MappingProxyType
пространства имён
Представление словаря только для чтения: изменить через него нельзя, но правки исходного словаря видны сразу. Так устроен __dict__ класса.
Синтаксис
types.MappingProxyType(mapping)
Прокси — не копия и не заморозка. Кто держит исходный словарь, по-прежнему может его менять, и прокси это покажет; изменяемые значения внутри (списки) тоже правятся свободно. Подходит, чтобы отдать наружу настройки модуля без права записи. Нужна независимая копия — dict(proxy); нужен неизменяемый словарь — frozendict в 3.15 или кортеж пар.
Примеры
from types import MappingProxyType
settings = {'debug': False}
view = MappingProxyType(settings)
try:
view['debug'] = True
except TypeError:
print('TypeError') # → TypeError
settings['debug'] = True
print(view['debug']) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности