В следующем коде 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