[英]python ABC & Multiple Inheritance
我想知道是否可以在 python 中使用多個 inheritance 和抽象基 class。 似乎應該是可能的,但無法以一種或另一種方式找到陳述。
基本的 ABC 示例:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
由於“你好”沒有在“孩子”中實現,這將失敗。
我想知道如何將ABC與多個inheritance結合起來。 我想讓“BaseABC”或“Child”也從其他一些單獨的 class 繼承。 明確地:
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()
這也不會失敗。 我怎樣才能要求“孩子”來實現“你好”?
問題在於從 dict 繼承,這些人可能更好地解釋了這一點:
因此,根據您想對子類 dict 做什么,您可以使用 go 和MutableMapping ,如https://stackoverflow.com/a/3387975/14536215或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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.