我有一组函数:func1,func2,func3,... funcN。根据用户输入,将仅使用1个功能,例如,如果用户输入'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
后选择函数,而不触及不需要的函数。
如何有效实现这一目标?非常感谢。
答案 0 :(得分: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
变量实际上是序列中的数字,则列表非常有效,字典对于任何其他可清除的字符(例如字符串)都很有用。