pythonabc&多重继承

2024-04-27 00:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道在python中是否可以使用抽象基类的多重继承。似乎这应该是可能的,但无论如何都找不到一个陈述

基本ABC示例:


from abc import ABC, abstractmethod


class BaseABC(ABC):

    @abstractmethod
    def hello(self):
        pass


class Child(BaseABC):
    pass


child = 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”实现“hello”


Tags: fromimportselfchildhellodefpass基类
1条回答
网友
1楼 · 发布于 2024-04-27 00:48:52

问题在于从dict继承,这些人可能更好地解释了这一点:

因此,根据您想对子类dict执行的操作,您可以使用https://stackoverflow.com/a/3387975/14536215中建议的MutableMappingUserDict(这是可变映射的子类),例如:

from abc import ABC, abstractmethod
from collections import UserDict


class BaseABC(ABC):

    @abstractmethod
    def hello(self):
        pass

class Child(BaseABC, UserDict):
    pass


child = Child()

相关问题 更多 >