Python:如何在__init__方法中访问类变量?解决NameError报错
解决Python类__init__方法中访问类变量的NameError问题
在实例方法(如__init__)中直接使用APP会触发NameError,因为Python会在当前局部作用域查找该名称,而类变量APP并不在这个作用域内。以下是两种可靠的解决方式:
方法一:通过类名直接访问类变量
直接使用类名引用类变量,这是最直接的方式:
class Hare: APP = 10 def __init__(self): print(Hare.APP) # 通过类名访问类变量 h = Hare() # 输出:10
方法二:通过self.__class__访问类变量
如果你的类可能被继承,使用self.__class__能自动适配子类的类变量,灵活性更强:
class Hare: APP = 10 def __init__(self): print(self.__class__.APP) # 通过实例的__class__属性访问类变量 h = Hare() # 输出:10 # 子类继承场景示例 class Rabbit(Hare): APP = 20 r = Rabbit() # 输出:20,自动使用子类的类变量
补充说明
你也可以用self.APP访问,但如果实例被赋予了同名实例属性(比如self.APP = 5),self.APP会优先指向实例属性而非类变量。如果明确要访问类本身的变量,优先使用前两种方法。
原错误信息:
NameError: name 'APP' is not defined
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

