Python 如何在循环中调用一个类的多个方法?

Python 如何在循环中调用一个类的多个方法?,python,python-3.x,loops,Python,Python 3.x,Loops,我有一个类(称为name),它有如下不同的方法: 亚历克斯()、约翰()、克莱尔()、查尔斯()、卢克()、理查德()、珍()等等 我需要逐个调用所有这些方法,例如: name.alex() name.john() name.claire() name.charles() name.luke() name.richard() name.jen() 。。。等等 我尝试做的是创建一个名称列表,并调用循环中的所有方法 names_list = ['alex', 'john, 'claire', 'c

我有一个类(称为name),它有如下不同的方法:

亚历克斯()、约翰()、克莱尔()、查尔斯()、卢克()、理查德()、珍()等等

我需要逐个调用所有这些方法,例如:

name.alex()
name.john()
name.claire()
name.charles()
name.luke()
name.richard()
name.jen()
。。。等等

我尝试做的是创建一个名称列表,并调用循环中的所有方法

names_list = ['alex', 'john, 'claire', 'charles', 'luke', 'richard', 'jen']

for i in range(len(names_list)):
    class_name.names_list[i]()

但是这种调用方法的方式失败了。有没有办法在一个循环中调用同一类的多个方法?

当然。存储实际方法:

name = YourClass()
methods = [name.alex,  name.john, name.claire ] # ...

for m in methods:
    m()
我的猜测是,你有一个-你想做的可能是试图解决一个问题,你可以避免使用其他类型的设计


对于大约一百万个名称,每个名称使用一个方法是不切实际的…

如果您想这样做,可以使用
getattr

names_list = ['alex', 'john', 'claire', 'charles', 'luke', 'richard', 'jen']

for name in names_list:
    getattr(class_name, name)()

注意,这假设
class\u name
是类的实际实例,或者这些方法是
staticmethods
。否则,您将需要
class\u name()

根据这些函数实际执行的操作,将您的函数重构为一个单独的函数(如
class\u name.process\u name('alex')等)可能更有意义。这很有效,现在人们只需在名称列表中添加他们的方法,并运行他们创建的方法。谢谢@卡尔文说,我真的建议你看看你是否可以重新考虑你的类的设计——这是一种非传统的结构方式。我理解,但类是预定义的,是组织内部使用的库的一部分。我无法对其进行任何更改,因为我无法控制该库。谢谢@卡尔文,不客气!如果我的回答对你有帮助,你可以接受它,这样其他遇到这个问题的人就可以看到它有一个解决方案。