You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.fooBase.bar都不能被直接调用,所以我觉得这两个方法都不应该出现类型警告才对。退一步说,如果在Derived.foo里写return super().foo(),那确实该有警告,但Derived.bar这么写的话也应该有同样的警告啊,实在搞不懂为什么PyCharm会区别对待这两个方法。

有没有大佬能帮忙解释下这个现象,还是说这真的是PyCharm的一个bug呢?

备注:内容来源于stack exchange,提问作者Fidel I. Schaposnik

火山引擎 最新活动