在python中,有没有一种方法可以做到以下几点?
for method in list_of_methods:
class_instance.method(data)
我认为这在python中是可能的,因为很多东西都是第一类对象。
编辑:使用下面的一些评论,我尝试了这个:
class Class_Test:
def __init__(self):
pass
def method1(self, data):
print(f"Method 1: {data}")
def method2(self,data):
print(f"Method 1: {data}")
list_of_methods = ["method1","method2"]
for method in list_of_methods:
getattr(Class_Test(),method)("inside for loop")
如果list_of_methods
是方法名称的字符串列表,请使用getattr
按名称获取绑定实例方法,然后调用它。
for method in list_of_methods:
getattr(class_instance, method)(data)
相反,如果list_of_methods
是来自同一类的未绑定方法的列表
for method in list_of_methods:
method(class_instance, data)
即
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self, volume):
print(f"{self.name} makes a sound at volume {volume}")
list_of_animals = [Animal("Puppo"), Animal("Catto")]
list_of_method_names = ["make_sound"]
list_of_methods = [Animal.make_sound]
for animal in list_of_animals:
for method_name in list_of_method_names:
getattr(animal, method_name)(15)
for method in list_of_methods:
method(animal, 24)
打印
Puppo makes a sound at volume 15
Puppo makes a sound at volume 24
Catto makes a sound at volume 15
Catto makes a sound at volume 24