Python中的singledispatch可以实现类似“多态”的效果, 比如:
@singledispatch
def add(a, b):
return a + b
@add.register(int)
def _(a, b):
return a + b
@add.register(str)
def _(a, b):
return a + " | " + b
@add.register(list)
def _(a, b):
return a + b + ["end"]
调用add方法, 传入的参数类型不同, 真正调用的方法也不一样。其中, 下划线_的函数命名方式并没有什么问题, 因为它是作为@add.register(int)这个函数的“入参”, 知道了这一点, 叫什么名字并不重要。