从classmethod到staticmethod:mypy抱怨mixin但不抱怨继承。

问题描述 投票:0回答:1

当我使用继承权时,当我改变一个 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"

为什么会这样?

python-3.x mixins typing mypy
1个回答
0
投票

其实这是mypy 0.710中修复的一个bug,可能是由 #6720.

© www.soinside.com 2019 - 2024. All rights reserved.