Python如何获取类属性所属的类名或完整类属性标识
实现方案
- 方法1:使用
__qualname__直接获取带类名的完整属性路径
Python 3.3及以上版本内置的__qualname__属性会展示类成员的完整层级路径,无需额外封装逻辑,完全适配你的需求。
运行示例:
class Test: __slots__ = ['a', 'b'] # 直接获取「类名.属性名」格式的结果 print(Test.a.__qualname__) # 输出:Test.a # 分割字符串即可单独提取所属类名 print(Test.a.__qualname__.split('.')[0]) # 输出:Test
- 方法2:使用
__objclass__获取属性所属的类对象
如果你后续需要操作属性所属的类本身,而不只是获取类名字符串,可以直接调用插槽成员自带的__objclass__属性:
class Test: __slots__ = ['a', 'b'] # 直接获取属性所属的类对象 owner_class = Test.a.__objclass__ print(owner_class) # 输出:<class '__main__.Test'> # 从类对象中提取类名 print(owner_class.__name__) # 输出:Test
注意:以上方法仅适用于
__slots__定义的成员、类方法、类内嵌套类等类层级成员。如果是普通的类属性(比如类内直接定义a = 1),属性本身是通用数据类型,没有内置的所属类标记,需要单独封装逻辑实现。
内容的提问来源于stack exchange,提问作者Gedankenpolizei
相关产品推荐
相关产品推荐

