我一直在看Mike Pirnat关于python样式的讨论:
http://pyvideo.org/pycon-us-2011/pycon-2011--exhibition-of-atrocity.html
但是我不明白一部分(从7点开始):这是关于如何避免使用很长时间的#elif"在您希望根据一个字符串指令运行方法的情况下的结构。例如,我们可以创建一个字典,每个方法都通过关键字链接:
class myOperations():
def __init__(self):
self.operation = {'suma':self.sum,
'resta':self.minus,
'mult':self.multiply,
'div':self.divide}
def sum(self, a,b):
return a+b
def minus(self, a,b):
return a-b
def multiply(self, a,b):
return a*b
def divide(self, a,b):
return a/b
op = myOperations()
treatment = op.operation['suma']
print treatment(2,3)
然而,作者说有办法完全外化这个过程,这样你就可以避免在操作字典中定义关键字。他使用注射装饰器给我这个结构我不明白...
我现在的问题是:我想使用关键字(以及给定的方法参数)访问myOperations类上的不同操作,这是比上面代码上的过程更先进的方法。
非常感谢任何建议。对不起,如果问题不明确。