我有一个从MutableSequence继承的类,如下所示:
class QqTag(MutableSequence):
def __init__(self):
self._children = []
def __getitem__(self, idx: int) -> 'QqTag':
return self._children[idx]我抱怨Signature of "__getitem__" incompatible with supertype "Sequence"。
在Sequence中,此方法定义为:
@abstractmethod
def __getitem__(self, index):
raise IndexError那么,问题是什么,为什么mypy对我的实现不满意?
发布于 2021-12-18 15:40:16
另一种选择是使用typing.overload装饰器。
from typing import overload
class QqTag(MutableSequence):
def __init__(self):
self._children = []
@overload
def __getitem__(self, i: int) -> 'QqTag':
...
@overload
def __getitem__(self, s: slice) -> list['QqTag']:
...
def __getitem__(self, idx):
return self._children[idx]参见打字或PEP 484 -类型提示中的示例。
https://stackoverflow.com/questions/46685165
复制相似问题