Python是否覆盖另一个类的变量?

2024-04-26 07:49:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想不通的简单问题: 我有一个(示例)文件:

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,所以这里没有覆盖

我不知道如何覆盖导入的类实例的变量。我检查了thisthis,但这对我没有帮助。 很抱歉问这么简单的问题,提前谢谢


Tags: 文件nameself示例iffoomainvar
2条回答

它正在被覆盖,但您将立即丢弃该对象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()

当您执行foo().bar()时,您正在创建第二个实例

试试这个:

    test = foo()
    test.var = 2
    test.bar()
 #   foo().var = 2
 #   foo().bar()

相关问题 更多 >