我有一个有几个函数的类。
在该类之外,我想通过引用指定调用哪个函数,但我不确定如何调用。
例如,我有一个
Animal
具有两个函数的类
sound
和
food
.我想要一个
Zoo
类,该类接收
动物
的函数作为输入,并将该函数应用于它所持有的每个动物实例(函数
all_animals_features
).
class Animal:
def __init__(self, sound, food):
self.my_sound = sound
self.my_food = food
def sound(self):
# Do some complicated stuff....
return self.my_sound
def food(self):
return self.my_food
class Zoo():
def __init__(self, animals):
self.animals = animals
def all_animals_features(self, f):
return [animal.f() for animal in self.animals]
dog = Animal('Woof', 'Bone')
cat = Animal('Meow', 'Cream')
zoo = Zoo([cat, dog])
zoo.all_animals_features(Animal.sound)
但当然,
'Animal' object has no attribute 'f'
.
知道如何实现吗?
澄清:如这个愚蠢的例子所示,如果所需要的只是获得一个属性,那么使用起来可能更简单
getattr()
.