Почему порядок имеет значение при переопределении @abstractmethods в Python? - PullRequest
0 голосов
/ 10 апреля 2020

Почему порядок базового класса имеет значение при переопределении @abstractmethods в базовых классах? Можно ли переопределить абстрактные методы в базовых классах, не завися от порядка базовых классов?

from abc import ABC, abstractmethod

class A(ABC):
    @abstractmethod
    def f(self):
        raise NotImplementedError

class B:
    def f(self):
        pass

# class C(A,B): pass  # fails
class C(B,A): pass  # works

Пока работает C(B,A), C(A,B) приводит к

TypeError: Can't instantiate abstract class C with abstract methods f

...