如何在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
相关产品推荐
相关产品推荐

