Является ли хорошей практикой иметь абстрактный родительский класс и абстрактный дочерний класс в Python? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть 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 Ответ

1 голос
/ 10 июня 2019

Если система классов ваших проектов требует этого, то это хорошая практика.Все зависит от того, что вы пытаетесь реализовать.

Например.Вы могли бы иметь школу, которая предлагает Course с.Эти курсы могут быть Cooking и Painting.Теперь для приготовления у нас есть разные стили Italian, Greek, ....

Course и Cooking, которые могут быть абстрактными, поскольку нам никогда не придется создавать экземпляр универсального Course.

Это хорошая практика?Все зависит от содержания ваших занятий.Содержит ли Cooking дополнительную информацию, которой нет у Course?Может быть, список ингредиентов?

Однако мы можем захотеть, чтобы Cooking не был абстрактным классом.Возможно, также возможны общие уроки кулинарии.

Все зависит от того, чего вы пытаетесь достичь.

...