ExpertiDict

Python · Avançado · Inglês · Técnico

singledispatch

/ˈsɪŋɡəl dɪˈspætʃ/substantivo

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

Veja também

Todos os termos de Python