ker*_*ane 9 python multiple-inheritance abc
我想知道是否可以在 python 中使用带有抽象基类的多重继承。似乎应该是可能的,但无法以一种或另一种方式找到声明。
基本的 ABC 示例:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
由于“hello”未在“Child”中实现,这将失败。
我想知道如何将 ABC 与多重继承结合起来。我想让“BaseABC”或“Child”也从其他一些单独的类继承。明确:
from abc import ABC, abstractmethod
class BaseABC(ABC, dict):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
这不会像第一种情况那样以预期的方式失败。还:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC, dict):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
这也不会失败。我怎样才能要求“孩子”来实现“你好”?
问题在于从 dict 继承,这些人可能更好地解释了这一点:
因此,根据您想对子类 dict 执行的操作,您可以按照/sf/answers/237158281/ 中的建议使用MutableMapping或使用UserDict(它是 MutableMapping 的子类),例如:
from abc import ABC, abstractmethod
from collections import UserDict
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC, UserDict):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |