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'。 –