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

如何打印所有类属性而非实例属性,得到['list1','list2']输出?

获取类属性而非实例属性的实现方案

嘿,刚好碰到过类似的需求!要只提取类本身的属性(排除实例属性)并得到['list1','list2']这样的结果,这里有两种简单靠谱的方法,用Python就能轻松实现:

方法一:利用类的__dict__属性直接过滤

类的__dict__属性会存储它所有的自定义属性和内置属性,我们只需要过滤掉那些双下划线开头的内置属性(比如__module__、__doc__)就行。举个例子:

# 先定义一个包含类属性和实例属性的示例类
class MyClass:
    list1 = []
    list2 = []
    
    def __init__(self):
        self.instance_attr = "这是实例独有的属性"

# 提取类属性
class_attributes = [key for key in MyClass.__dict__ if not key.startswith('__')]
print(class_attributes)  # 输出: ['list1', 'list2']

方法二:结合dir()函数筛选

dir()会列出类的所有属性和方法,我们可以进一步过滤掉方法和内置属性,只保留类变量:

class_attributes = [attr for attr in dir(MyClass) 
                   if not attr.startswith('__') 
                   and not callable(getattr(MyClass, attr))]
print(class_attributes)  # 输出: ['list1', 'list2']

这个方法更严谨,如果你的类里定义了方法,它会自动排除掉,只留下类级别的变量。

小提示

要注意区分类属性和实例属性:类属性是存在类的命名空间里的,所有实例共享;而实例属性是每个实例自己创建的,只属于该实例。所以直接操作类本身的属性集合(而不是实例的),就能准确拿到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:54:52