簡體   English   中英

python ABC & 多個 Inheritance

[英]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/14536215UserDict中建議的那樣(這是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM