Изменения внутри класса не отражаются вне класса - PullRequest
0 голосов
/ 07 апреля 2020
>>> poi = 1

>>> class my_class():
     def __init__(self,poi):
         self.poi=poi
         for h in range(0,10):
              self.poi +=  1
              poi = self.poi
         print(self.poi)          

>>> my_class(0)
>>> 10
Out[68]: <__main__.my_class at 0x1ae14d7c400>

>>> poi
Out[69]: 1

Здесь я хочу изменить переменную poi. Я хочу, чтобы изменение произошло внутри класса, и я хочу, чтобы это изменение было отражено за пределами класса. Когда я печатаю self.poi, он печатает 10. Но когда я печатаю poi, он все равно говорит начальное значение 1, означающее, что изменение не отражается вне класса. Что я должен сделать, чтобы это отражалось вне класса?

1 Ответ

0 голосов
/ 07 апреля 2020

У вас есть poi, объявленный как константа, поэтому я бы не стал менять его там, где он есть, но если вы действительно хотите, запустите объявлять poi как глобальный. Например:

...
global poi
poi = self.poi
...

Однако ... Подумайте над тем, чтобы поместить poi на верхний уровень вашего класса, например:

class my_class():
     poi = 1
     def __init__(self):
         for h in range(0,10):
              self.poi +=  1
         print(self.poi) 

Таким образом, ваш экземпляр будет иметь увеличенное значение, но константа класса останется прежней.

...