我正在阅读David Beazley & Brian K. Jones 's book "Python Cookbook" (Ed 3)。第35页有一个ChainMap
的示例。我不太了解values
的上下跳跃,请在下面查看我的理解和问题:
>>> values = ChainMap()
>>> values['x'] = 1
我想现在
values
是ChainMap({'x': 1})
>>> # Add a new mapping
>>> values = values.new_child()
>>> values['x'] = 2
在这3行的结尾,什么是
values
? ChainMap
还是里面的字典?我真的有点迷路,这里的代码对我来说是
ChainMap
添加了一个新的孩子,它应该是一本新的字典;因此values
成为由ChainMap
链接的词典项;然后values
被分配给新字典。>>> # Add a new mapping
>>> values = values.new_child()
>>> values['x'] = 3
但是现在它链接的
values' start to call
new_child()again! Isnt'
new_child()can only be called by a
ChainMap , not a particular
dictionary`吗? 最佳答案
这是一本很棒的书,我想每个Python开发人员都应该至少阅读第1章和第4章
关于您的问题:
在这3行的末尾,现在的值是多少?
值是ChainMap
对象,其中映射了2个字典:
values = ChainMap({'x': 1}, {'x': 2})
令人困惑的是,(变异的)对象本身是从
new_child()
返回的,而不是真正的子对象。但是现在值再次开始调用new_child()!
当然,您可以根据需要多次调用
new_child()
,values
始终是具有定义方法ChainMap
的new_child()
对象。关于python - ChainMap.new_child()返回什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27998953/