Python 3.8+functoolsфункция
functools.singledispatchmethod
обобщённые функции
Декоратор метода с одиночной диспетчеризацией: выбирает реализацию по типу первого аргумента (после self).
Синтаксис
@functools.singledispatchmethod
Появился в Python 3.8; диспетчеризация идёт по типу первого аргумента после self, и тип обычно берут из его аннотации. Регистрируемые реализации принято называть _ — имя роли не играет, значение имеет только register; а если складывать декоратор с classmethod или staticmethod, singledispatchmethod должен быть самым внешним, иначе атрибут register до него не доберётся.
Примеры
from functools import singledispatchmethod
class C:
@singledispatchmethod
def f(self, x): return 'other'
@f.register
def _(self, x: int): return 'int'
print(C().f(5)) # → int
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности