| rank | vote | view | answer | url |
|---|---|---|---|---|
| 68 | 1247 | 502333 | 10 | url |
通过函数名的字符串来调用这个函数
假如我们有个模块叫foo,而我有一个"bar"字符串.调用foo.bar()有什么最好的方法?
我需要返回函数值,为什么我不能用eval.我想应该能用eval来定义一个函数来返回调用的结果,但是我希望更优雅的方法.
假设foo有一个bar方法:
import foo
methodToCall = getattr(foo, 'bar')
result = methodToCall()
第二行和第三行可以简写:
result = getattr(foo, 'bar')()
如果让上面的代码更有意义.getattr可以用在实例绑定,模块级方法,类方法...等等