根据输入选择特定函数的最有效方法
我有一组函数:func1、func2、func3,直到funcN。根据用户的输入,只会使用其中一个函数,比如如果用户输入'1',那么只会用到func1。目前我做的是把这些函数放在一个分支里:
class FunctionEnsembles:
def __init__(self,select_funcion):
self.function_to_select=select_function
def function_to_use(self):
if self.function_to_select=='1':
func1...
elif self.function_to_select=='2':
func2...
...
显然这样效率不高。当类被实例化,比如说 FunctionEnsemble myfunc('1')
,所有函数的定义都会被加载。如果调用myfunc.function_to_use,它会遍历所有的分支,这样就不太好。我想要的是:在实例化类 FunctionEnsemble
时,只选择一个函数,而不去碰那些不需要的函数。
怎么才能有效地实现这个呢?非常感谢。
1 个回答
1
Python中的函数是第一类对象,也就是说,你可以把它们放进一个列表里:
functions = [None, func1, func2, func3, ...]
functions[int(self.function_to_select)]()
或者放进一个字典里:
functions = {
'selection1': func1,
'selection2': func2,
'selection3': func3,
}
functions[self.function_to_select]()
如果你的function_to_select
变量实际上是一个数字序列中的数字,列表非常好用;而字典则适合其他任何可以被哈希的东西,比如字符串。