ChainMap.new_child() return 是什么意思?

What does ChainMap.new_child() return?

我正在阅读 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 

在这 3 行的末尾,values 现在是什么? ChainMap 还是里面的字典?

我真的有点迷茫,这里的代码对我来说意味着ChainMap添加了一个新的child,这应该是一个新的字典;所以 values 成为字典项 链接 ChainMap;然后 values 被分配给新的字典 .

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

但是现在 values' start to callnew_child()again! Isnt'new_child()can only be called by aChainMap, not a particulardictionary` 它链接了吗?

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

关于您的问题:

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

值是 ChainMap object,映射了 2 个词典:

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

令人困惑的是(变异的)object 本身是从 new_child() 返回的,而不是真正的 child.

But now values' start to callnew_child()again!

当然你可以调用new_child()任意多次,values总是ChainMapobject定义方法new_child()