Python · Avançado · Inglês · Técnico
singledispatch
Decorator do functools que transforma uma função em genérica, escolhendo a implementação conforme o tipo do primeiro argumento. É uma forma de sobrecarga por tipo.
Onde usar
Substitui cadeias de isinstance em funções de formatação ou serialização, e permite registrar novos tipos sem alterar a função original. Para métodos, existe o singledispatchmethod.
Em código
from functools import singledispatch
@singledispatch
def fmt(x):
return str(x)
@fmt.register(list)
def _(x):
return ','.join(map(str, x))Exemplos
Replace the isinstance chain with singledispatch.
Troque a cadeia de isinstance por singledispatch.
Register a handler for each type with singledispatch.
Registre um tratador para cada tipo com singledispatch.
Cuidado
O despacho olha só o tipo do primeiro argumento em tempo de execução; não é o mesmo que overload, que só informa o verificador estático.
Sinônimos
despacho único