从类方法到静态方法: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