在python中拥有抽象父类和抽象子类是一种好习惯吗?

时间:2019-06-10 08:36:08

标签: python inheritance abstract-class

我有2级继承,因此父级是一个抽象类,它为其第一级子级初始化公用。 此外,每个第一级子级也是一个基本抽象类,可为第二(也是最后一个)级继承类初始化其他唯一的参数

这些类将类似于以下内容:

抽象父级:

class AbstractParent(metaclass=ABCMeta):
    def __init__():
        <initialize common stuff>

    @abstractmethod
    def abstract_method():
        pass

第一级抽象子级:

class AbstractChild(AbstractParent, metaclass=ABCMeta):

    def __init___():
        AbstractParent.__init__(self)
        <initialize common stuff relevant for AbstractChild>

    @abstractmethod
    def abstract_method():
        pass

第二个也是最后一个孩子:

class Child(AbstractChild):

    def __init___():
        AbstractChild.__init__(self)

    def abstract_method():
        <implementation of something...>

具有多级继承,使多级抽象类似于我上面介绍的,是一种好习惯吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的项目的类系统需要它,那么这是一个好习惯。这完全取决于您要实现的目标。

例如。您可能有一所提供Course的学校。这些课程可以是CookingPainting。现在,我们有不同的烹饪方式ItalianGreek,....

CourseCooking在这里可以很抽象,因为我们永远不必创建通用Course的实例。

这是好习惯吗?这一切都取决于您课程的内容。 Cooking是否包含Course没有的额外信息?也许是配料表?

但是,我们可能希望Cooking不是抽象类。也许还可以参加一般的烹饪班。

这完全取决于您要实现的目标。