Представьте функцию, которая генерирует конфиг. Если действие —
DELETE, она возвращает список путей (`list[str]`), в остальных случаях — словарь (`dict`).
def generate_config(context: dict, action: Action) -> dict | list[str]:
...
Для Mypy такая функция возвращает «или словарь, или список». Если вы попытаетесь использовать результат как чистый
dict, тайп-чекер выдаст ошибку, даже если вы уверены в типе.✨ Решение: использование @overload
Декоратор
@overload позволяет описать конкретные комбинации входных и выходных данных:
from typing import overload, Literal
@overload
def generate_config(context: dict, action: Literal[Action.DELETE]) -> list[str]: ...
@overload
def generate_config(context: dict, action: Literal[Action.MODIFY, Action.ADD]) -> dict: ...
def generate_config(context: dict, action: Action) -> dict | list[str]:
# Реальная логика здесь
...
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
