我刚想学习Python中的K叉树实现,发现了这个链接:http://www.quesucede.com/page/show/id/python-3-tree-implementation
在tree.py文件中,有这样一段代码:
class Tree:
def __init__(self):
self.__nodes = {}
@property
def nodes(self):
return self.__nodes
def add_node(self, identifier, parent=None):
node = Node(identifier)
self[identifier] = node
if parent is not None:
self[parent].add_child(identifier)
return node
# ... ...
def __getitem__(self, key):
return self.__nodes[key]
def __setitem__(self, key, item):
self.__nodes[key] = item
什么是
self[identifier]
?它是一个列表吗?这真的很令人困惑。有人能解释一下并/或者给我一些使用self作为列表的文档吗?
__getitem__
吗?如果不看__getitem__
的实现,我们无法回答你的问题。 - inspectorG4dget__setitem__
用于项目赋值而不是项目检索。 - user2357112self
只是一棵树,self.__nodes
是一个字典。self['value']
使用了__getitem__
。 - OneCricketeer