6

如何__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.firstnameself.lastname。我怎样才能做到这一点?

4

1 回答 1

15

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

class DietPizza(BasePizza):
    def __init__(self):
        super().__init__()
        self.lastname = "Last Name"
于 2015-05-28T18:06:49.377 回答