Как сформулировать подсказку типа для функции Python, которую можно переназначать при рекурсивных вызовах?Python

Программы на Python
Anonymous
Как сформулировать подсказку типа для функции Python, которую можно переназначать при рекурсивных вызовах?

Сообщение Anonymous »

Возьмем следующий минимальный пример:

Код: Выделить всё

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

Вернуться в «Python»