Почему класс __ dict __ mappingproxy?

Интересно почему класс __dict__ a mappingproxy, но экземпляр __dict__ просто плоскость dict

>>> class A:
...     pass

>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class 'mappingproxy'>
59
задан 7 August 2018 в 20:59

1 ответ

mappingproxy является просто dict без __setattr__ метод.

можно проверить и обратиться к этому коду.

from types import MappingProxyType
d={'key': "value"}
m = MappingProxyType(d)
print(type(m)) # <class 'mappingproxy'>

m['key']='new' #TypeError: 'mappingproxy' object does not support item assignment
<час>

mappingproxy начиная с Python 3.3. Следующий код показывает типы dict:

class C:pass
ci=C()
print(type(C.__dict__)) #<class 'mappingproxy'>
print(type(ci.__dict__)) #<class 'dict'>
3
ответ дан 1 November 2019 в 12:50

Другие вопросы по тегам:

Похожие вопросы: