【问题标题】:What the difference between dict_proxy in python2 and mappingproxy in python3?python2中的dict_proxy和python3中的mappingproxy有什么区别?
【发布时间】:2016-09-25 14:06:09
【问题描述】:

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

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

但是在python3中__dict__返回mappingproxy

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

他们两个有什么区别吗?

【问题讨论】:

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


    【解决方案1】:

    没有真正的区别,它just got renamed

    当有人提议在issue #14386中暴露typing模块中的类型时,对象也被重命名了:

    我想在这个名字上稍微介绍一下。我认为应该是 映射代理。 (我们很少使用“视图”,而是我们使用的地方 对于键/值/项目视图,我认为它非常不同。还 collections.abc 已经将 MappingView 定义为 KeysView 和朋友们。)

    不管怎样,你不是第一个说我们已经使用“视图”来定义其他东西的人,所以我写了一个新补丁来使用“mappingproxy”名称(公开为 types.MappingProxyType)。

    更改made it into Python 3.3,因此在 Python 3.2 中您仍会看到旧名称。

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2012-05-14
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多