我不知道的简单问题: 我有一个(示例)文件与此:
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,因此这里没有覆盖。
我不知道如何实际覆盖导入的类实例的变量。我检查了this和this,但这并没有帮助我。 抱歉,问这样一个简单的问题,谢谢。
答案 0 :(得分:1)
它已被覆盖,但是您将立即丢弃该对象。 foo().var = 2
创建一个匿名foo
对象,并将其var
分配给2
。问题是您没有对刚刚创建的foo
对象保持引用。然后,foo().bar()
创建一个新foo
对象,该对象具有var == 1
(就像 all 个新foo
对象一样,这就是您的类所执行的操作),并在此 new bar()
对象上调用foo
成员函数,该对象将打印1
到控制台。
尝试以下方法:
def bar2(self):
foo_obj = foo()
foo_obj.var = 2
foo_obj.bar()
答案 1 :(得分:0)
执行foo().bar()
时,您正在创建第二个实例。
尝试一下:
test = foo() test.var = 2 test.bar() # foo().var = 2 # foo().bar()