Python 具有自己的 __init__ 函数的抽象方法

Python Abstract Method With It's own __init__ function

如何在基础和派生抽象 class 中定义一个 __init__ 函数,并使所有 self.* 在抽象方法中可用?例如:

使用在抽象 class 的基 class 中导入的函数的正确方法是什么?例如:在 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.firstnameself.lastname。我该怎么做?

你的BasePizza.__init__是一个具体的方法;只需使用 super():

调用它
class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname = "Last Name"