类中的Python Setter方法未提供预期的输出

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

我正在尝试使用Python中的setter更新节点中的rank字段。下面是我使用的代码:

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。有人可以让我知道我在代码中甚至在概念上到底在哪里出错吗?

python class methods constructor getter-setter
2个回答
1
投票

您必须创建您的类的对象:

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

1
投票

您正在每行上创建和使用一个新的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。

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