0
我有一些导入函数from package import fizz, buzz
,我想将它们映射到字符串arg的变量func
。将导入的函数映射到变量
class Whatever(object):
def __init__(self, func_name='fizz'):
try:
self.func = vars()[func_name]
except KeyError:
print "Bad func_name"
raise
但vars()
只捕捉局部命名空间,我不希望允许globals()
访问。有任何想法吗?或者我应该只用if-else逻辑呢?
这可能是你在找什么:https://docs.python.org/3 /library/functions.html#exec –
为什么不直接将*函数直接传递给初始值设定项:'def __init __(self,func = fizz)' –
但基本上,如果你想访问全球以外的全局名称使用一个字符串作用域,那么你可以使用* glob *来使用'globals',或者更糟的是,使用'exec'或'eval'。 –