在 Python 程序中给定带有函数名称的字符串,调用函数的最佳方法是什么。例如,假设我有一个 module foo,并且我有一个字符串,其内容是"bar". 最好的打电话方式是foo.bar()什么?
foo
"bar"
foo.bar()
我需要获取函数的返回值,这就是为什么我不只使用eval. 我想出了如何通过使用eval定义一个返回该函数调用结果的临时函数来做到这一点,但我希望有一种更优雅的方式来做到这一点。
eval
假设foo具有方法的模块bar:
bar
import foo method_to_call = getattr(foo, 'bar') result = method_to_call()
您可以将第 2 行和第 3 行缩短为:
result = getattr(foo, 'bar')()
如果这对您的用例更有意义。
您可以getattr以这种方式在类实例绑定方法、模块级方法、类方法上使用……不胜枚举。
getattr