代码之家  ›  专栏  ›  技术社区  ›  Flying Thunder

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

  •  0
  • Flying Thunder  · 技术社区  · 6 年前

    我想不通的简单问题:

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

    我不知道如何覆盖导入的类实例的变量。我查过了 this this 很抱歉问这么简单的问题,提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Matt Messersmith    6 年前

    foo().var = 2 创建匿名 foo var 2 . 问题是你没有保持 参考 你刚刚创建的对象。那么, foo().bar() 创建 对象 var == 1 (就像 全部的 新的 对象,因为这是您的类所做的),并且还调用 bar() 新的 1 到控制台。

    请尝试以下操作:

    def bar2(self):
        foo_obj = foo()
        foo_obj.var = 2
        foo_obj.bar()
    
        2
  •  0
  •   NickNick    6 年前

    当你在做 foo().bar() ,您正在创建第二个实例。

    试试这个:

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