Python Setter class 中的方法没有给出预期的输出

Python Setter method in class not giving expected output

我正在尝试使用 Python 中的设置器更新节点中的排名字段。以下是我使用的代码:

class Tree(object):
    def __init__(self,u):
        self.parent=u
        self.rank=0

    def get_parent(self):
        return self.parent

    def get_rank(self):
        return self.rank

    def set_parent(self,v):
        self.parent=v

    def set_rank(self,v):
        self.rank=v

然后我运行下面的代码:

Tree(0).get_rank()
Tree(0).set_rank(5)
Tree(0).get_rank()

输出:

0

预期输出:

5

在这里,我得到的输出本身是 0,而不是我期望的 5。任何人都可以让我知道我在代码甚至概念上到底哪里出了问题吗?

您必须为您的 class 创建一个对象:

tree = Tree(0)
tree.get_rank()
tree.set_rank(5)
tree.get_rank()
5

您正在每行创建和使用一个新的 Tree 对象:

Tree(0).get_rank()   # first tree object
Tree(0).set_rank(5)  # second tree object
Tree(0).get_rank()   # third tree object

因此,当您在第三个上调用 get_rank 时,它是全新初始化的,因此它的等级为 0。