python - 如何在 OrderedDict 中访问 __map?
问题描述
我查看了 OrderedDict 的源代码,它有:
def __setitem__(self, key, value,
dict_setitem=dict.__setitem__, proxy=_proxy, Link=_Link):
'od.__setitem__(i, y) <==> od[i]=y'
# Setting a new item creates a new link at the end of the linked list,
# and the inherited dictionary is updated with the new key/value pair.
if key not in self:
self.__map[key] = link = Link()
root = self.__root
last = root.prev
link.prev, link.next, link.key = last, root, key
last.next = link
root.prev = proxy(link)
dict_setitem(self, key, value)
我想看看 OrderedDict 中的 __map 对象,但是当我在 OrderedDict 对象上运行 dir() 时__map
,输出中没有对象。实际上__dict__
属性是空的:
>>> from collections import OrderedDict
>>> a = OrderedDict()
>>> a[1] = 1
>>> a
OrderedDict([(1, 1)])
>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'move_to_end', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>> a.__dict__
{}
>>> a.__map
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'collections.OrderedDict' object has no attribute '__map'
所以,真的有2个问题。
为什么
__map
属性(和__root
其他属性)没有出现在 dir()我必须做什么才能访问 __map 属性?
编辑:我也尝试了名称修饰的东西:
>>> a._OrderedDict__map
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'collections.OrderedDict' object has no attribute '_OrderedDict__map'
解决方案
推荐阅读
- javascript - 单击事件返回未定义,但是当我在窗口上运行加载事件时,该函数起作用
- python - 构建词汇表表示python
- java - android studio 同时播放多个剪辑 - 使用线程?
- arrays - 通过减去维度来折叠立方体
- angular - 嵌套的 Observables:我做错了什么?
- html - 为段落添加边距/空间
- android - Android 启动器图标裁剪到我的图标图像中
- c# - .NET Core 中 NLog 与 Elasticsearch 的集成问题
- swift - 初始化器只能在一个类型中声明
- java - 反序列化 Map 时出错
春季休息模板的回应