从类方法到静态方法:mypy 抱怨 mixin 而不是继承
From classmethod to staticmethod: mypy complains for mixin but not inheritance
当我使用继承时,当我将 classmethod
更改为 staticmethod
时,mypy 不会抱怨:
class A:
@classmethod
def f(cls, a: int) -> int:
return a
class B(A):
@staticmethod
def f(a: int) -> int:
return a+1
但是,如果我使用 mixin 来做同样的事情:
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 中修复的错误,可能由 #6720。
当我使用继承时,当我将 classmethod
更改为 staticmethod
时,mypy 不会抱怨:
class A:
@classmethod
def f(cls, a: int) -> int:
return a
class B(A):
@staticmethod
def f(a: int) -> int:
return a+1
但是,如果我使用 mixin 来做同样的事情:
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 中修复的错误,可能由 #6720。