将存储在string中的字符串转换为函数(Python)

时间:2017-04-27 09:03:39

标签: python string python-2.7 function

如果我有一个函数的名称存储在一个字符串中,如下所示:

foo ='some_function'

假设我可以调用 bar.some_function.baz(),我怎么能用foo做呢?显然这个例子没有解释为什么我不能只使用 some_function 但是在实际的代码中我迭代了我想要调用的函数名列表。

为了更清楚,如果 bar.some_function.baz()打印'Hello world!',那么一些代码,使用 foo some_function 不应该这样做。是否可以使用字符串的值和 exec()

提前致谢

1 个答案:

答案 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()