要替换if / elif / elif

时间:2016-09-22 02:11:56

标签: python polymorphism

来自" Fluent Python"书,它说:

  

但是,即使使用ABCs,也应该注意过度使用   实例检查可能是代码异味 - OO设计不良的症状。它的   通常不能用if / elif / elif链进行实例检查   根据对象的类型执行不同的操作:您   应该使用多态性,即设计你的类   而解释器调度调用适当的方法   你在if / elif / elif块中硬编码调度逻辑。

现在,有很多关于如何替换if / elif / elif块的SO问题,很多答案都在使用词典等等。但这不是段落所暗示的内容

  

设计类,以便解释器调度调用正确的方法

这是否意味着以下方法?

class Artist:
    def draw(self): ...

class Gunslinger:
    def draw(self): ...

class Lottery:
    def draw(self): ...

调度员只需致电:

def draw_dispatcher(obj):
    obj.draw()

还有其他方法吗?

0 个答案:

没有答案