问题描述
我不知道的简单问题:我有一个(示例)文件:
class foo:
var = 1
def bar(self):
print(self.var)
if __name__ == "__main__":
foo().bar()
和file2与此:
from testing import foo
class foo2:
def bar2(self):
foo().var = 2
foo().bar()
foo2().bar2()
它返回1,所以这里没有覆盖发生。
我无法弄清楚如何实际覆盖导入的类实例的变量。 我检查和 ,但是这没有帮助我。 抱歉,问这样一个简单的问题,谢谢。
1楼
它已被覆盖,但是您将立即丢弃该对象。
foo().var = 2
创建一个匿名foo
对象,并将其var
分配给2
。
问题是您没有保留对刚刚创建的foo
对象的引用 。
然后, foo().bar()
创建一个新的foo
对象 ,该对象的 var == 1
(就像所有新的foo
对象一样,因为这是您的类所做的事情),并且还在此新的 foo
对象上调用bar()
成员函数,它将打印1
到控制台。
尝试以下方法:
def bar2(self):
foo_obj = foo()
foo_obj.var = 2
foo_obj.bar()
2楼
在执行foo().bar()
,您正在创建第二个实例。
尝试这个:
test = foo() test.var = 2 test.bar() # foo().var = 2 # foo().bar()