self [identifier] = some_value在这段代码中做了什么?

Rah*_*rma 6 python

我只是想在Python中学习K-ary树实现并且遇到了这个链接: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
Run Code Online (Sandbox Code Playgroud)

什么是self[identifier]?这是一个清单吗?这真令人困惑.有人可以解释和/或指出一些使用self作为列表的文档吗?

Aar*_*sen 3

在完整的示例代码中,这是重要的一点:

def __getitem__(self, key):
    return self.__nodes[key]

def __setitem__(self, key, item):
    self.__nodes[key] = item
Run Code Online (Sandbox Code Playgroud)

这两个“神奇方法”__getitem____setitem__允许使用语法像列表或字典一样访问类foo[key]

因此,在您的情况下, iffoo是一个Tree实例,foo["a"] = "b"__setitem__使用keyas"a"itemas执行"b",从而映射key到字典itemself.__nodes