MappingProxyType походит на dict
, где метод __setattr__
всегда будет выдавать ошибку. По замыслу вы не можете добавлять новые пары ключ / значение. Однако вы можете получить мелкую копию его содержимого в обычном словаре.
Предполагая, что у вас есть сопоставляющий прокси ...
import types
# Given a normal dictionary...
dictionary = {
"foo": 10,
"bar": 20,
}
# That has been wrapped in a mapping proxy...
proxy = types.MappingProxyType(dictionary)
# That cannot accept new key/value pairs...
proxy["baz"] = 30 # Throws TypeError: 'mappingproxy' object does not support item assignment
Вы можете создать мелкая копия его внутреннего словаря, например, так:
dictionary_copy = proxy.copy()
print(type(dictionary_copy)) # Prints "<class 'dict'>"
print(dictionary_copy is dictionary) # Prints "False" because it's a copy
dictionary_copy["baz"] = 30 # Doesn't throw any errors
Насколько я знаю, нет способа извлечь исходный словарь или добавить новые пары ключ / значение без создания сначала копия.