我正在玩弄带有类型提示的幺半群。为此,我写了:
M = TypeVar('M')
class Monoid(Generic[M]):
...
def append(self, m: 'Monoid[M]') -> 'Monoid[M]':
raise NotImplementedError()
在子类中使用它时,例如
A = TypeVar('A')
class List(Monoid[A], Generic[A]):
def __init__(self, *values: A) -> None:
self._values = tuple(values)
...
def append(self, m: 'List[A]') -> 'List[A]':
return List(*(self.values + m.values))
我明白了error: Argument 1 of "append" incompatible with supertype "Monoid"
。由于List
是 的正确子类Monoid
,我希望它能够输入。我究竟做错了什么?