具有自己的初始化函数的python抽象方法

Python Abstract Method With It's own __init__ function

本问题已经有最佳答案,请猛点这里访问。

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

使用抽象类的基类中导入的函数的正确方法是什么?例如:在base.py中,我有以下内容:

1
2
3
4
5
6
7
8
9
10
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中定义了方法:

1
2
3
4
5
6
7
8
9
10
11
12
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()调用它:

1
2
3
4
class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname ="Last Name"