我注意到当我在python2中创建类时,它将属性存储在dict_proxy
object:
>>> class A(object):
... pass
>>> A.__dict__
dict_proxy({....})
但是在python3中__dict__
会返回mappingproxy
:
>>> class A(object):
... pass
>>> A.__dict__
mappingproxy({....})
他们两个之间有什么区别吗?
答案 0 :(得分:5)
没有真正的区别,just got renamed。
当建议在issue #14386中公开typing
模块中的类型时,该对象也被重命名:
我想对这个名字稍微说一下。我认为应该是 MappingProxy。 (我们不使用“视图”,而是使用的地方 它,对于键/值/项目视图,我认为是非常不同的。也 collections.abc已经将MappingView定义为基类 KeysView和朋友。)
和
无论如何,你不是第一个说我们已经使用“view”来定义别的东西的人,所以我写了一个新的补丁来使用“mappingproxy”这个名字(暴露为types.MappingProxyType)。
更改made it into Python 3.3,因此在Python 3.2中,您仍会看到旧名称。