Python переменная начального класса сбрасывается после каждого вызова - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть пример класса ниже. self.number продолжает сбрасываться после каждого вызова функции вычисления. Я ожидаю, что когда функция вычисления вызывается каждый раз, self.number = self.number + 1, и каждый раз, когда я вызываю self.number, я ожидаю накопленное значение. Я ожидаю окончательный результат 10 с 10 циклами в примере ниже. Прямо сейчас vaue self.number сбрасывается в 0 и добавляет 1 каждый вызов.

class ExampleClass(object):
    def __init__(self):
        self.number = 0

    def calculate(self):
        self.number = self.number + 1
        return self.number


for i in range(10):
    classID = ExampleClass()
    print(classID.calculate())

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Вы создаете новый экземпляр класса внутри l oop. Таким образом, в каждой итерации l oop создается и используется новый объект ExampleClass.

Чтобы получить желаемое поведение, переместите экземпляр объекта за пределы l oop

* 1005. *
0 голосов
/ 10 апреля 2020

Потому что каждый раз, когда вы звоните ExampleClass() в for для l oop self.number инициализируется на 0.

, чтобы делать то, что вы ожидаете, вы должны попробовать:

class ExampleClass(object):
    def __init__(self):
        self.number = 0

    def calculate(self):
        self.number = self.number + 1
        return self.number

classID = ExampleClass()
for i in range(10):
    print(classID.calculate())
...