【问题标题】:Python Setter method in class not giving expected output类中的 Python Setter 方法没有给出预期的输出
【发布时间】:2019-11-11 07:41:29
【问题描述】:

我正在尝试使用 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。谁能让我知道我在代码中甚至在概念上到底哪里出了问题?

【问题讨论】:

  • 第二行的 Tree(0) 与第一行的 Tree(0) 不同。尝试对两条线都执行id(Tree(0)) 以查看它。
  • 您每次都在对新对象执行操作,因此您正在丢弃中间状态。此外,getter 和 setter 在 Java 中很常见,但在 Python 中却很少见。只需直接设置和读取属性

标签: python class methods constructor getter-setter


【解决方案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。

【讨论】:

    【解决方案2】:

    你必须为你的类创建一个对象:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多