Обработка ошибок проверки типов Python с помощью объявлений возвращаемых типовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработка ошибок проверки типов Python с помощью объявлений возвращаемых типов

Сообщение Anonymous »

Я столкнулся с проблемой в моем коде Python при использовании средства проверки типов Pyright, особенно когда я пытаюсь удалить Any из объявления возвращаемого типа.
Сначала посмотрите/прочитайте этот вопрос: Обработка Ошибки проверки типов Python с объявлениями возвращаемых типов (значения полей по умолчанию = Нет)
Сообщение об ошибке:

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

Function with declared return type "int" must return value on all code paths. "None" is incompatible with "int".
А что насчет этого дела? Я по-прежнему получаю ту же ошибку, что и выше (вопрос из-за переполнения стека), хотя мои классы не содержат None.

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

from dataclasses import dataclass
from typing import Any, Union, List

class Exp:
pass

@dataclass
class Const(Exp):
value: int

@dataclass
class Negate(Exp):
value: Exp

@dataclass
class Add(Exp):
value1: Exp
value2: Exp

@dataclass
class Multiply(Exp):
value1: Exp
value2: Exp

def eval_exp_old(e: Exp) -> int | Any:
match e:
case Const(i):
return i
case Negate(e2):
return -eval_exp_old(e2)
case Add(e1, e2):
return eval_exp_old(e1) + eval_exp_old(e2)
case Multiply(e1, e2):
return eval_exp_old(e1) * eval_exp_old(e2)

test_exp: Exp = Multiply(Negate(Add(Const(2), Const(2))), Const(7))
# -28
old_test = eval_exp_old(test_exp)
Ошибка:

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

def eval_exp_old(e: Exp) -> int { ... }
Я ценю любые советы.
Кстати, проверьте эту статью, которая также опубликована в принятом ответе.
https://discuss.python .org/t/draft-pep-sealed-decorator-for-static-typing/49206

Подробнее здесь: https://stackoverflow.com/questions/787 ... clarations
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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