Python类NameError。 Var未定义

时间:2017-04-18 17:35:32

标签: python python-3.x nameerror

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.

为什么?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

make class in classmethod或instance方法然后你可以访问所有类实例属性或varable里面的方法,如果方法是实例方法,或者如果类方法然后你可以在方法内访问类属性

class A():
     a = 0

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

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