Python:实例方法是一流的对象吗



在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

最新更新