Абстрактный метод Python с собственной функцией __init__

Как я могу определить __init__ функционируют как в базовых, так и в производных абстрактных классах и имеют все self.* быть доступным в абстрактном методе? Например:

Как правильно использовать функции, которые импортируются в базовый класс абстрактного класса? Например: в base.py у меня есть следующее:

import abc

class BasePizza(object):
    __metaclass__  = abc.ABCMeta
    def __init__(self):
        self.firstname = "My Name"

    @abc.abstractmethod
    def get_ingredients(self):
         """Returns the ingredient list."""

Затем я определяю метод в diet.py:

import base

class DietPizza(base.BasePizza):
    def __init__(self):
        self.lastname = "Last Name"

    @staticmethod
    def get_ingredients():
        if functions.istrue():
            return True
        else:
            return False

Однако когда я бегу diet.py У меня есть доступ только к self.lastname, я бы хотел DietPizza иметь оба self.firstname а также self.lastname, Как я могу это сделать?

1 ответ

Решение

Ваш BasePizza.__init__ конкретный метод; просто вызвать его, используя super():

class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname = "Last Name"
Другие вопросы по тегам