Python Glossary English

Python 3.11+typingфункция

typing.get_overloads

интроспекция

Возвращает список ранее зарегистрированных @overload-реализаций функции (пустой, если их нет; Python 3.11+).

Синтаксис

typing.get_overloads(func)

Передавать нужно итоговую реализацию функции, а не @overload-заглушку; если перегрузок нет, вернётся пустой список. До Python 3.11 перегрузки на рантайме были не видны вовсе — теперь @overload их регистрирует, а очистить реестр можно через typing.clear_overloads().

Примеры

from typing import overload, get_overloads, clear_overloads
print(get_overloads(len) == [])   # → True
from typing import overload, get_overloads, clear_overloads
@overload
def parse(x: int) -> int: ...
@overload
def parse(x: str) -> str: ...
def parse(x): return x   # единственная реальная реализация
print(len(get_overloads(parse)))   # → 2
print(get_overloads(parse)[0].__annotations__['x'] is int)   # → True
print(parse('ok'))   # → ok
clear_overloads()
print(get_overloads(parse) == [])   # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности