将导入的函数映射到变量

时间:2017-05-10 18:59:55

标签: python namespaces

我有一些导入的函数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逻辑?

1 个答案:

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