来自" 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()
还有其他方法吗?