我正在尝试使用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。有人可以让我知道我在代码中甚至在概念上到底在哪里出错吗?
您必须创建您的类的对象:
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。