PyCharm针对抽象基类的类型警告不一致问题咨询
PyCharm针对抽象基类的类型警告不一致问题咨询
我遇到了一个PyCharm类型检查的奇怪问题,想请大家帮忙解释下,或者看看是不是PyCharm的bug:
在下面这段代码里,PyCharm给Base.foo标了类型警告(提示“Expected to return 'int', got no return”),但完全相同类型注解和返回逻辑的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都不能被直接调用,所以我觉得这两个方法都不应该出现类型警告才对。退一步说,如果在Derived.foo里写return super().foo(),那确实该有警告,但Derived.bar这么写的话也应该有同样的警告啊,实在搞不懂为什么PyCharm会区别对待这两个方法。
有没有大佬能帮忙解释下这个现象,还是说这真的是PyCharm的一个bug呢?
备注:内容来源于stack exchange,提问作者Fidel I. Schaposnik




