做什么ChainMap.new\u子级()返回?

2024-04-27 03:36:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在读David Beazley & Brian K. Jones 's book "Python Cookbook" (Ed 3)。第35页有一个ChainMap的例子。我不太理解values上下跳跃,请看下面我的理解和问题:

>>> values = ChainMap()
>>> values['x'] = 1     

我想现在valuesChainMap({'x': 1})

>>> # Add a new mapping
>>> values = values.new_child() 
>>> values['x'] = 2 

在这三行的末尾,现在是values什么?是里面的ChainMap还是字典?你知道吗

我真的有点迷路了,这里的代码对我来说意味着ChainMap添加了一个新的子项,这应该是一个新的字典;所以values变成了一个字典项,由ChainMap链接;然后values被分配给新字典。你知道吗

>>> # Add a new mapping
>>> values = values.new_child() 
>>> values['x'] = 3

但是现在values' start to callnew\u child()again! Isnt'new\u child()can only be called by aChainMap, not a particular字典`它链接了吗?你知道吗


Tags: addchildnew字典链接mappingdavidvalues
1条回答
网友
1楼 · 发布于 2024-04-27 03:36:38

这是一本好书,我想每个Python开发人员至少应该阅读第1章和第4章

关于你的问题:

At the end of these 3 lines, what is values now?

值是ChainMap对象,映射了2个字典:

values = ChainMap({'x': 1}, {'x': 2})

令人困惑的是,(突变的)对象本身是从new_child()返回的,而不是真正的子对象。你知道吗

But now values' start to callnew_child()again!

当然,您可以根据需要多次调用new_child()values将始终是具有已定义方法new_child()ChainMap对象

相关问题 更多 >