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

Python如何遍历类对象列表并调用类方法?

遍历类对象并调用方法的问题

当然可以遍历多个类对象并调用它们的方法,但你当前的代码存在错误,导致无法正常运行。

问题原因

你创建的objlist里存放的是对象名称的字符串('obj1'、'obj2'),而不是实际的Services类对象。字符串类型并没有do_something方法,运行时会抛出AttributeError: 'str' object has no attribute 'do_something'的错误。

修正方法

把实际的类对象直接存入列表,而不是对象名的字符串:

objlist = [obj1, obj2]

完整可运行代码

class Services:
    
    def __init__(self,a1,b1):
        self.a1 = a1
        self.b1 = b1
        
    
    def do_something(self):
        print('hello')
        
        

obj1 = Services('aaa','bbb')
obj2 = Services('aaa1','bbb1')

# 存储实际的类对象
objlist = [obj1, obj2]

for i in objlist:
    i.do_something()

运行这段代码会输出两次hello,达到预期效果。

特殊场景处理(不推荐)

如果因为某些限制只能获取到对象名的字符串,可以通过globals()或locals()函数获取对应的对象,再调用方法:

objlist = ['obj1','obj2']
for name in objlist:
    obj = globals()[name]
    obj.do_something()

但这种方式存在安全风险(比如字符串对应不存在的变量或恶意内容),也不符合Python编码规范,优先推荐直接存储对象到列表的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:12:40