Несоответствие ввода предупреждения PyCharm для абстрактных базовых классовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Несоответствие ввода предупреждения PyCharm для абстрактных базовых классов

Сообщение Anonymous »

В следующем коде PyCharm выдает предупреждение о вводе для Base.foo («Ожидается возврат 'int', возврат не получен»), но не для Base.bar, который ровно та же подсказка при вводе и тип возвращаемого значения:

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

import abc

class Base(abc.ABC):
@abc.abstractmethod
def foo(self) -> int:
print('fooing')
pass

@abc.abstractmethod
def bar(self) -> int:
pass

class Derived(Base):
def foo(self) -> int:
return 42

def bar(self) -> int:
return 42
На практике ни Base.foo, ни Base.bar не могут быть вызваны напрямую, поэтому я не ожидаю никаких предупреждений о вводе там вообще. Если, с другой стороны, нужно было вернуть super().foo() в Derived.foo, то предупреждение о вводе действительно должно быть выдано, но то же самое должно применяться и к Derived.bar< /code> так что я до сих пор не понимаю, почему такое разное поведение. Может кто-нибудь объяснить, или это ошибка в PyCharm?


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

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

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

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

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

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

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