rank | ▲ | ✰ | vote | url |
---|---|---|---|---|
59 | 383 | 111 | 805 | url |
通过函数名的字符串来调用这个函数
加入我们有个模块叫foo
,而我有一个"bar"
字符串.调用foo.bar()
有什么最好的方法?
我需要返回函数值,为什么我不能用eval
.我想应该能用eval
来定义一个函数来返回调用的结果,但是我希望更优雅的方法.
假设foo
有一个bar
方法:
import foo
methodToCall = getattr(foo, 'bar')
result = methodToCall()
第二行和第三行可以简写:
result = getattr(foo, 'bar')()
如果让上面的代码更有意义.getattr
可以用在实例绑定,模块级方法,类方法…等等
原文: https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/59/README.html