You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:55:47