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

