От классового метода к статическому: mypy жалуется на миксин, но не на наследство - PullRequest
0 голосов
/ 02 мая 2020

Когда я использую наследование, mypy не жалуется, когда я заменяю 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"

Почему это так?

1 Ответ

0 голосов
/ 02 мая 2020

На самом деле это была ошибка, исправленная в mypy 0.710, вероятно, на # 6720 .

...