当我使用继承权时,当我改变一个 classmethod
变成 staticmethod
:
class A:
@classmethod
def f(cls, a: int) -> int:
return a
class B(A):
@staticmethod
def f(a: int) -> int:
return a+1
然而,如果我使用一个混音器来做同样的事情。
class C:
@staticmethod
def f(a: int) -> int:
return a+1
class D(C, A):
pass
mypy给出了以下错误(在... class D(C, A):
行)。)
Definition of "f" in base class "C" is incompatible with definition in base class "A"
为什么会这样?
其实这是mypy 0.710中修复的一个bug,可能是由 #6720.