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