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