当您想从给定关键字中选择方法时,避免使用长elif - elif代码结构

时间:2017-04-28 21:41:56

标签: python dictionary

我一直在看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)

然而,作者说有办法完全外化这个过程,这样你就可以避免在操作字典中定义关键字。他使用注射装饰器给我这个结构我不明白...

enter image description here

我现在的问题是:我想使用关键字(以及给定的方法参数)访问myOperations类上的不同操作,这是比上面代码上的过程更先进的方法。

非常感谢任何建议。对不起,如果问题不明确。

0 个答案:

没有答案