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

Python:如何将类名赋值给类的类变量?

解决Python类变量中获取类名的问题

你遇到的问题本质是类定义过程中,类对象尚未完全创建,直接引用类名会触发NameError——因为此时Utilities这个名字还没绑定到刚在构建的类对象上。

下面提供几种可行的解决思路:

方法一:类定义完成后手动赋值

这是最直接的方式,等类完全创建好再给类变量赋值:

class Utilities:
    # 先定义类的其他内容
    pass

# 类创建完成后,再绑定className变量
Utilities.className = Utilities.__name__

方法二:使用类装饰器

用装饰器在类定义完成后自动注入类变量,适合需要给多个类添加这个属性的场景:

def add_class_name(cls):
    cls.className = cls.__name__
    return cls

@add_class_name
class Utilities:
    # 类内容
    pass

方法三:使用元类

元类可以控制类的创建过程,能在类被定义时自动设置类变量,适合需要全局统一处理的场景:

class ClassNameMeta(type):
    def __new__(meta, name, bases, attrs):
        # 在类创建时,直接把类名赋值给className属性
        attrs['className'] = name
        return super().__new__(meta, name, bases, attrs)

class Utilities(metaclass=ClassNameMeta):
    # 类内容
    pass

测试验证:

print(Utilities.className)  # 输出: Utilities

内容的提问来源于stack exchange,提问作者scorpion35

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:52:09