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Сообщить о неточности