Python抽象方法及其应用&x27;s自己的uu初始化uu函数

Python抽象方法及其应用&x27;s自己的uu初始化uu函数,python,python-3.x,abstract-class,abc,Python,Python 3.x,Abstract Class,Abc,如何在基本抽象类和派生抽象类中定义\uuuuu init\uuuu函数,并使所有self.*在抽象方法中可用?例如: 使用在抽象类的基类中导入的函数的正确方法是什么?例如:在base.py中,我有以下内容: import abc class BasePizza(object): __metaclass__ = abc.ABCMeta def __init__(self): self.firstname = "My Name" @abc.abstrac

如何在基本抽象类和派生抽象类中定义
\uuuuu init\uuuu
函数,并使所有
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
。我希望
self.firstname
self.lastname
都有
。我该怎么做呢?

你的
BasePizza.\uuu init\uuuu
是一个具体的方法;只需使用
super()
调用它:


太好了,谢谢你的回答。如果他们允许,我会在10分钟内接受。您不需要指定调用对象和类,即
super(DietPizza,self)。\uuuu init\uuuu()
?@BoltzmannBrain:不在Python 3中,不需要。@MartijnPieters touché,谢谢。
class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname = "Last Name"