Метод Python Setter в классе не дает ожидаемого вывода - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь обновить поле ранга в узле, используя сеттеры в 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, который я ожидаю. Кто-нибудь может дать мне знать, где именно я ошибаюсь в коде или даже концептуально?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы создаете и используете новый объект 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.

1 голос
/ 11 ноября 2019

Вы должны создать объект вашего класса:

tree = Tree(0)
tree.get_rank()
tree.set_rank(5)
tree.get_rank()
5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...