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

如何在Python中枚举类的所有属性及实例?附Human类示例代码

在Python中枚举类实例的属性并生成字典

嘿,我完全懂你的需求——就是要把Human类实例的所有属性名和对应值转换成字典,还能遍历这个字典对吧?这在Python里其实有几种很实用的方法,我给你一步步拆解:

方法1:直接使用实例的__dict__属性

每个Python实例都自带一个__dict__属性,它本身就是一个存储了所有实例属性键值对的字典,完全符合你的需求。

示例代码:

class Human:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

# 创建一个实例
person = Human("Alice", 28, "female")

# 获取属性字典
attr_dict = person.__dict__
print(attr_dict)  # 输出: {'name': 'Alice', 'age': 28, 'gender': 'female'}

# 遍历字典
for attr_name, attr_value in attr_dict.items():
    print(f"属性名: {attr_name}, 属性值: {attr_value}")

方法2:使用vars()函数

vars()是Python内置函数,传入实例时,它会返回该实例的__dict__属性,写法更简洁:

# 同样基于上面的Human类和person实例
attr_dict = vars(person)

# 遍历的方式和上面完全一样
for key, value in attr_dict.items():
    print(f"{key}: {value}")

小提醒

  • 这两种方法只会返回实例自己的属性,不会包含类属性(如果你的类有定义的话)。
  • 如果你的类里用到了__slots__属性,实例就不会生成__dict__,这时候可以用dir()结合getattr()手动构建字典(不过看你的示例类没用到__slots__,前面两种方法就足够用啦)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:33:42