考慮以下代碼示例: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()?我開始認(rèn)為我只是犯了一些非常愚蠢的錯誤......編輯:class ChildExtractor(BaseExtractor): def extract(self, interval, variants, anchor, *args, fixed_len=True, **kwargs): pass這會導(dǎo)致相同的錯誤。
1 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
考慮以下用法BaseExtractor:
def extractor_usage(extractor: BaseExtractor):
extractor.extract(interval=10)
它正確使用BaseExtractor接口,但傳遞ChildExtractor給此方法會導(dǎo)致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
添加回答
舉報
0/150
提交
取消