self.variable.function()在python中或通过类自变量访问方法的意思

问题描述 投票:0回答:1

我正在阅读二进制搜索树插入的这种简单方法,下面是解决方法:

class Node:

    def __init__(self, data):
        self.left = None
        self.right = None
        self.data = data

    def insert(self, data):
        if self.data:


            if data < self.data:
                if self.left is None:
                    self.left = Node(data)
                else:
                    self.left.insert(data)
            elif data > self.data:
                if self.right is None:
                    self.right = Node(data)
                else:
                    self.right.insert(data)
            else:
                self.data = data

    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print(self.data),
        if self.right:
            self.right.PrintTree()


if __name__ == "__main__":
    root = Node(12)
    root.insert(6)
    root.insert(14)
    root.insert(3)

    root.PrintTree()

但是我仍然想知道以下几行中他们通过变量调用函数的方法:

self.left.insert(data)

然后:

self.right.insert(data)

和:

self.left.PrintTree()

这叫什么?我需要对此进行回顾。

python algorithm data-structures binary-search-tree
1个回答
0
投票

insert(self, data)方法的内容中可以看到,rightleft实例属性用于保存类型为Node的对象,这些对象引用了self节点的两个子节点。您引用的行调用了此类中定义的方法,但是它们不是在self实例上调用它们,而是在子节点上调用它们,因此它们将使用不同的数据。

© www.soinside.com 2019 - 2024. All rights reserved.