functools.singledispatch
Превращает функцию в обобщённую: реализация выбирается по типу первого аргумента через зарегистрированные варианты.
Сигнатура
@functools.singledispatchsingledispatch даёт перегрузку по типу для обычных функций. Базовая функция работает по умолчанию, а конкретные типы регистрируются через @имя.register.
from functools import singledispatch
@singledispatch
def describe(value):
return f'объект: {value}'
@describe.register
def _(value: int):
return f'целое: {value}'
@describe.register
def _(value: list):
return f'список из {len(value)} элементов'
print(describe(42)) # 'целое: 42'
print(describe([1, 2])) # 'список из 2 элементов'
print(describe('текст')) # 'объект: текст'