Как сформулировать подсказку типа для функции 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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