我想知道是否可以在python中对抽象基类使用多重继承。似乎应该有可能,但无法以一种或另一种方式找到一条语句。
基本的ABC示例:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
由于未在“子级”中实现“hello”,因此将失败。我想知道如何将ABC与多重继承结合在一起。我想使“BaseABC”或“Child”也从其他一些单独的类继承。明确地:
from abc import ABC, abstractmethod
class BaseABC(ABC, dict):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
这不会像第一种情况那样以预期的方式失败。还:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC, dict):
pass
child = Child()
这也不会失败。我如何要求“ child ”实现“你好”?
最佳答案
问题在于从dict继承,这些家伙可能更好地解释了这些问题:
因此,几乎不需要处理子类dict,就可以按照MutableMapping或https://stackoverflow.com/a/3387975/14536215(MutableMapping的子类)中的建议使用UserDict,例如:
from abc import ABC, abstractmethod
from collections import UserDict
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC, UserDict):
pass
child = Child()
关于python ABC和多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66173332/