当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python functools.singledispatchmethod用法及代码示例


用法:

class functools.singledispatchmethod(func)

将方法转换为 single-dispatch 泛型函数。

要定义泛型方法,请使用 @singledispatchmethod 装饰器对其进行装饰。使用 @singledispatchmethod 定义函数时,请注意调度发生在第一个非 self 或非 cls 参数的类型上:

class Negator:
    @singledispatchmethod
    def neg(self, arg):
        raise NotImplementedError("Cannot negate a")

    @neg.register
    def _(self, arg: int):
        return -arg

    @neg.register
    def _(self, arg: bool):
        return not arg

@singledispatchmethod 支持与其他装饰器嵌套,例如 @classmethod 。请注意,要允许 dispatcher.register , singledispatchmethod 必须是 outer most 装饰器。这是 Negator 类,其中 neg 方法绑定到类,而不是类的实例:

class Negator:
    @singledispatchmethod
    @classmethod
    def neg(cls, arg):
        raise NotImplementedError("Cannot negate a")

    @neg.register
    @classmethod
    def _(cls, arg: int):
        return -arg

    @neg.register
    @classmethod
    def _(cls, arg: bool):
        return not arg

相同的模式可用于其他类似的装饰器:@staticmethod@abstractmethod 等。

3.8 版中的新函数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 functools.singledispatchmethod。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。