Возьмем следующий минимальный пример:
Код: Выделить всё
S = TypeVar("S", bound=int | str)
def meth(a: S) -> S:
if a == "5":
return str(meth(int(a)))
return a
В частности, приведенный выше метод может принимать как строку, так и целое число. Он всегда будет возвращать значение того же типа, что и входные данные, НО он может вызывать себя рекурсивно, и в этом случае значение S может потребоваться переназначить. При использовании приведенных выше подсказок mypy выдает ошибку:
Код: Выделить всё
error: Incompatible return value type (got "str", expected "S") [return-value]
Как правильно ввести приведенную выше функцию?
Подробнее здесь:
https://stackoverflow.com/questions/788 ... ssigned-in