为了账号安全,请及时绑定邮箱和手机立即绑定

PyCharm:为什么在这种情况下签名不匹配?

PyCharm:为什么在这种情况下签名不匹配?

SMILET 2022-07-12 09:51:43
考虑以下代码示例:class BaseExtractor(object, metaclass=abc.ABCMeta):    @abc.abstractmethod    def extract(self, interval, *args, **kwargs):        raise NotImplementedErrorclass ChildExtractor(BaseExtractor):    def extract(self, interval, variants, anchor, fixed_len=True, **kwargs):        pass为什么 PyCharm 告诉我ChildExtractor.extract()不匹配BaseExtractor.extract()?我开始认为我只是犯了一些非常愚蠢的错误......编辑:class ChildExtractor(BaseExtractor):    def extract(self, interval, variants, anchor, *args, fixed_len=True, **kwargs):        pass这会导致相同的错误。
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

考虑以下用法BaseExtractor:


def extractor_usage(extractor: BaseExtractor):

    extractor.extract(interval=10)

它正确使用BaseExtractor接口,但传递ChildExtractor给此方法会导致TypeError.


这个问题可以通过 makevariants和anchoroptional 来解决,例如:


class ChildExtractor(BaseExtractor):


    def extract(self, interval, variants=None, anchor=None, *args, fixed_len=True, **kwargs):

        pass


extractor_usage(ChildExtractor())  # No TypeError here


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信