python2中的dict_proxy和python3中的mappingproxy有什么区别?

时间:2016-09-25 14:06:09

标签: python python-3.x python-2.x python-internals

我注意到当我在python2中创建类时,它将属性存储在dict_proxy object:

>>> class A(object):
...     pass
>>> A.__dict__
dict_proxy({....})

但是在python3中__dict__会返回mappingproxy

>>> class A(object):
...     pass
>>> A.__dict__
mappingproxy({....})

他们两个之间有什么区别吗?

1 个答案:

答案 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中,您仍会看到旧名称。