假如我们有个模块叫foo
,想通过一个"bar"
字符串调用foo.bar(),
有什么好的方法?
假设foo
有一个bar
方法,可以用如下方式实现调用:
import foo
methodToCall = getattr(foo, 'bar')
result = methodToCall()
第二行和第三行可以简写:
result = getattr(foo, 'bar')()
或者可以使用如下方式来实现:
import sys
def afunc():
return 'call afunc'
def bfunc():
return 'call bfunc'
s= ["afunc", "bfunc"]
for str in s:
# get_afunc = getattr(sys.modules[__name__], str)
print(getattr(sys.modules[__name__], str)())