singledispathch是Pyhton的functools里的方法,在使用时,一般当做装饰器。
作用:类似c++中的重载,一个函数提供多种实现,根据参数类型的不同,调用不同的实现。
使用方法:
1. 必须有一个基函数(base_function),使用@singledispatch注解
2. 其他类重载函数【又称专门函数】使用@<<base_function>>.register(<<type>>)装饰;
举个例子:
python">@add.register(int)
def _(x, y):print("Implementation for integers")return x + y
3. 专门函数的名称无关紧要,可以选择用_作为函数名
4. 为每个需要处理的类型注册一个函数
5. 可以叠放多个register装饰器,让同一个函数支持不同类型
举个例子:
python">@add.register(int)
@add.register(str)
def _(x, y):print("Implementation for strings or int")return x + y