當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。