Python · Avançado · Inglês · Técnico
overload
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 * 2Exemplos
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.