动态调用函数 - Python

Rad*_*Hex 6 python

我有一个功能列表......例如

def filter_bunnies(pets): ...

def filter_turtles(pets): ...

def filter_narwhals(pets): ...
Run Code Online (Sandbox Code Playgroud)

有没有办法通过使用表示其名称的字符串来调用这些函数?

例如

'filter_bunnies', 'filter_turtles', 'filter_narwhals'
Run Code Online (Sandbox Code Playgroud)

Sil*_*ost 10

你的函数是一个对象的一部分吗?如果是这样你可以使用getattr函数:

>> class A:
    def filter_bunnies(self, pets):
        print('bunnies')

>>> getattr(A(), 'filter_bunnies')(1)
bunnies
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法:如果它们不是类的方法,则创建一个伪Dispatcher类并使它们成为方法. (2认同)