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

use*_*306 3 python abstract-class abc python-3.x

如何__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."""
Run Code Online (Sandbox Code Playgroud)

然后我在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
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,diet.py我只能访问self.lastname.我想要DietPizza两个self.firstnameself.lastname.我怎样才能做到这一点?

Mar*_*ers 9

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

class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname = "Last Name"
Run Code Online (Sandbox Code Playgroud)

  • 不需要指定调用对象和类,即`super(DietPizza, self).__init__()`吗? (2认同)
  • @BoltzmannBrain:不在 Python 3 中,不。 (2认同)