【发布时间】:2017-05-07 09:57:47
【问题描述】:
我需要两级抽象类和第三级具体类:
from abc import ABC
class Shape(ABC):
...
class Quad(ABC, Shape):
...
class Square(Quadrilateral)
...
此代码根据Quad 的声明生成TypeError: Cannot create a consistent method resolution。我意识到问题是多重继承的歧义。 Quad 不知道是直接从ABC 还是从Shape 派生某些函数,但是我该如何解决呢?我不能从Quad 的声明中删除ABC,因为那样它就不再是抽象的了。
【问题讨论】:
-
ABC来自哪里?是abc.ABC吗?你能给个minimal reproducible example吗? -
这是创建抽象类的标准 Pythonic 方式:from abc import ABC
-
然后把它放在问题中。请edit,并提供更少抽象(且更内部一致)的示例。
-
好的 jonrsharpe。我添加了它。我认为可以在关于抽象类的 Python 问题中假设 ABC。对不起。
-
请注意
class Quad(Shape, ABC):没有此错误 - 参见例如stackoverflow.com/a/3003284/3001761
标签: python python-3.x multiple-inheritance abc