необходимы два уровня абстрактных классов и конкретный класс третьего уровня:Двухуровневая абстрактный класс иерархии без «последовательного выбора метода» ошибки
from abc import ABC
class Shape(ABC):
...
class Quad(ABC, Shape):
...
class Square(Quadrilateral)
...
Этот код генерирует TypeError: Cannot create a consistent method resolution
против декларации Quad
. Я понимаю, что проблема заключается в неоднозначности множественного наследования. Quad
не знает, нужно ли выводить определенные функции непосредственно из ABC
или из Shape
, но как исправить это? Я не могу отказаться от ABC
от заявления Quad
, потому что тогда он больше не будет абстрактным.
Откуда берет «ABC»? Это 'abc.ABC'? Не могли бы вы дать [mcve]? – jonrsharpe
Это стандартный питонический способ создания абстрактного класса: от abc импорт ABC –
Then * положить это в вопрос *. Пожалуйста, отредактируйте и дайте менее абстрактные (и более внутренние) примеры. – jonrsharpe