ExpertiDict

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

overload

/ˈoʊvɚˌloʊd/substantivo

Decorator do typing que declara várias assinaturas de tipo para uma mesma função, mostrando ao verificador como o retorno depende dos argumentos. Só existe para a checagem estática.

Onde usar

Útil quando uma função devolve tipos diferentes conforme o argumento, como str ou bytes. A implementação real fica numa última definição, sem decorator.

Em código

from typing import overload

@overload
def dobro(x: int) -> int: ...
@overload
def dobro(x: str) -> str: ...
def dobro(x):
  return x * 2

Exemplos

Add an overload so mypy knows str gives str.

Adicione um overload para o mypy saber que str gera str.

The overload stubs have no body, only the last definition does.

Os overloads não têm corpo, só a última definição tem.

Cuidado

As assinaturas com @overload não rodam nada; o Python executa só a implementação final, então ela precisa tratar todos os casos.

Veja também

Todos os termos de Python