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
可以用在实例绑定,模块级方法,类方法...等等