我注意到在python2中创建类时,它将属性存储在dict_proxy
对象中:
>>> class A(object):
... pass
>>> A.__dict__
dict_proxy({....})
但在python3中
__dict__
返回mappingproxy
:>>> class A(object):
... pass
>>> A.__dict__
mappingproxy({....})
他们两个有什么区别吗?
最佳答案
没有真正的区别,它just got renamed。
当提议在issue #14386中公开typing
模块中的类型时,对象也被重命名:
我想在这个名字上骑自行车。我想应该是
映射代理。(我们不太使用“视图”,而是使用
它,对于键/值/项视图,我认为是非常不同的。阿尔索
collections.abc已经将MappingView定义为
键视图和朋友。)
和
无论如何,你不是第一个说我们已经用“view”定义了其他东西的人,所以我写了一个新的补丁来使用“mappingproxy”名称(公开为types.MappingProxyType)。
更改made it into Python 3.3,因此在Python 3.2中您仍然可以看到旧名称。