Python - перезаписать переменную из другого класса? - PullRequest
0 голосов
/ 04 октября 2018

Простой вопрос, который я не могу понять: у меня есть (пример) файл один с этим:

class foo:
var = 1
def bar(self):
    print(self.var)

if __name__ == "__main__":
    foo().bar()

и файл2 с этим:

from testing import foo

class foo2:
    def bar2(self):
        foo().var = 2
        foo().bar()


foo2().bar2()

Возвращает 1, поэтому нетздесь происходит перезапись.

Я не могу понять, как на самом деле перезаписать переменную импортированного экземпляра класса.Я проверил это и это , но это не помогло мне.Извините, что задали такой простой вопрос, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Когда вы делаете foo().bar(), вы создаете второй экземпляр.

Попробуйте это:

    test = foo()
    test.var = 2
    test.bar()
 #   foo().var = 2
 #   foo().bar()
0 голосов
/ 04 октября 2018

Он перезаписывается, но вы немедленно отбрасываете объект.foo().var = 2 создает анонимный foo объект и присваивает ему var 2.Проблема в том, что вы не сохраняете ссылку на foo объект, который вы только что создали.Затем foo().bar() создает новый foo объект , который имеет var == 1 (точно так же, как все новые foo объекты, так как это делает ваш класс), а также вызываетbar() функция-член для этого нового foo объекта, который будет выводить 1 на консоль.

Попробуйте вместо этого:

def bar2(self):
    foo_obj = foo()
    foo_obj.var = 2
    foo_obj.bar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...