Class NameError: name 'var' is not defined

Class NameError: name 'var' is not defined

class Gui():
    var = None
    def refreshStats(args):
        print(str(var))
clas = Gui()
clas.refreshStats()

追踪

File "sample.py", line 5, in refreshStats
    print(str(var))
NameError: name 'var' is not defined.

为什么?

var 未在 refreshStats() 函数的范围内定义,因为它是一个 class 变量。

因此,如果你想访问它,你可以Gui.var

如果您希望变量在 class 函数的范围内可见,请将 self 传递给每个 class 函数并将您的 class 变量用作 self.var例如:

class Gui():
    var = None
    def refreshStats(self, args):
        print(str(self.var))
clas = Gui()
clas.refreshStats()

如果您想将其用作实例变量(仅用于 class 的这个实例)而不是 class 变量(在 class 的所有实例之间共享) ) 您应该在 __init__ 函数中声明它:

class Gui():
    def __init__(self):
        self.var = None
    def refreshStats(self, args):
        print(str(self.var))
clas = Gui()
clas.refreshStats()

make method inside class classmethod 或 instance method 然后你可以访问所有 class instance 属性 or varable inside method if method is instance method or if class 方法然后 class 属性 你可以访问内部方法

class A():
     a = 0

     def aa(self):
         """instance method"""
         print self.a

     @classmethod
     def bb(cls):
         """class method"""
         print cls.a