如果我有一个函数的名称存储在一个字符串中,如下所示:
foo ='some_function'
假设我可以调用 bar.some_function.baz(),我怎么能用foo做呢?显然这个例子没有解释为什么我不能只使用 some_function 但是在实际的代码中我迭代了我想要调用的函数名列表。
为了更清楚,如果 bar.some_function.baz()打印'Hello world!',那么一些代码,使用 foo 但 some_function 不应该这样做。是否可以使用字符串的值和 exec()?
提前致谢
答案 0 :(得分:0)
如果它在课堂上,你可以使用getattr:
class MyClass(object):
def install(self):
print "In install"
method_name = 'install' # set by the command line options
my_cls = MyClass()
method = None
try:
method = getattr(my_cls, method_name)
except AttributeError:
raise NotImplementedError("Class `{}` does not implement `{}`".format(my_cls.__class__.__name__, method_name))
()的方法 或者如果它是一个功能:
def install():
print "In install"
method_name = 'install' # set by the command line options
possibles = globals().copy()
possibles.update(locals())
method = possibles.get(method_name)
if not method:
raise NotImplementedError("Method %s not implemented" % method_name)
method()