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