python类名错误。变量未定义

Python class NameError. Var is not defined

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
class Gui():
    var = None
    def refreshStats(args):
        print(str(var))
clas = Gui()
clas.refreshStats()

痕迹

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

为什么?


使方法在类内成为ClassMethod或Instance方法,然后可以访问所有类实例属性,或者如果方法是Instance方法,则可以访问方法内的varable;如果方法是Class方法,则可以访问方法内的Class属性。

1
2
3
4
5
6
7
8
9
10
11
class A():
     a = 0

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

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

如果希望变量在类函数范围内可见,请将self传递到每个类函数中,并将类变量用作self.var,如下所示:

1
2
3
4
5
6
class Gui():
    var = None
    def refreshStats(self, args):
        print(str(self.var))
clas = Gui()
clas.refreshStats()

如果要将它用作实例变量(仅用于类的这个实例),而不是类变量(在类的所有实例中共享),则应在__init__函数中声明它:

1
2
3
4
5
6
7
class Gui():
    def __init__(self):
        self.var = None
    def refreshStats(self, args):
        print(str(self.var))
clas = Gui()
clas.refreshStats()


var不是在refreshStats()函数的作用域中定义的,因为它是一个类变量。

因此,如果您想访问它,可以执行Gui.var