Python-从另一个类覆盖变量?

时间:2018-10-04 14:26:30

标签: python class variables

我不知道的简单问题: 我有一个(示例)文件与此:

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,因此这里没有覆盖。

我不知道如何实际覆盖导入的类实例的变量。我检查了thisthis,但这并没有帮助我。 抱歉,问这样一个简单的问题,谢谢。

2 个答案:

答案 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()