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

Python中如何迭代访问动态设置的类对象属性?

Python中如何迭代访问动态设置的类对象属性?

你遇到的问题很典型——想用循环变量直接访问属性,但Python会把obj.i里的i当成字面量的属性名,而不是循环变量的取值,所以才会报错。其实解决方法很简单,用和setattr对应的getattr函数就可以了,它能通过字符串形式的属性名来获取对象的属性值。

给你两种最直接的实现方式:

1. 循环中直接打印属性值

既然你已经有了属性名的列表fds,直接遍历这个列表,用getattr获取对应属性就行:

class MyClass:
    pass

obj = MyClass()
fds = ['a','b','c']

# 动态设置属性(你的原有代码)
for i in fds:
    setattr(obj, i, [i])

# 迭代访问并打印属性
for attr_name in fds:
    print(getattr(obj, attr_name))

运行这段代码就会输出你想要的结果:

['a']
['b']
['c']

2. 收集属性值到列表中

如果想把这些属性值整理成一个列表方便后续检查,用列表推导式就能搞定:

# 收集所有属性值到列表
attribute_values = [getattr(obj, attr) for attr in fds]
print(attribute_values)
# 输出: [['a'], ['b'], ['c']]

额外小提示

如果担心某些属性可能不存在(比如fds里有个名字写错了),可以给getattr加个默认值,避免报错:

print(getattr(obj, attr_name, "属性不存在"))

如果想查看对象所有的实例属性,还可以遍历obj.__dict__(这是存储实例属性的字典),不过这种方法会包含所有实例属性,如果你只需要fds里指定的那些,还是前面的方法更精准。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:05:30