我有一些导入的函数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逻辑?
答案 0 :(得分:2)
您可以使用白名单......或者在这种情况下,使用“白色字典”
class Whatever(object):
allowed = { 'fizz':fizz, 'buzz':buz }
def __init__(self, func_name='fizz'):
try:
self.func = self.allowed[func_name]
except KeyError:
print "Bad func_name"
raise