面向对象的编程在没有参数的类中访问函数(python)

时间:2016-12-08 07:10:25

标签: python class oop parameters abstract-class

编辑:我希望对我的担忧更清楚。 我知道这对于我正在寻求答案的问题有很多信息。此外,expressMeal和megaMeal在两个不同的文件上。用户必须输入1或2,并且我假设用它调用实例变量。 我的问题以粗体显示,其余部分是该计划的背景资料

首先,如果这令人困惑或者我不清楚,我想道歉。这是我第一次在stackoverflow.com上写作。

我必须写一个关于一家快餐店的蟒蛇节目。它有两种类型的餐供顾客选择。快餐包括肉类和配菜。大餐包括肉类,配菜,饮料和甜点。在这两个文件中 init 方法仅假设具有self参数。此外,我必须定义一个chooseMeat方法来选择肉类,一个chooseSide方法来选择副项目,以及一个displayOrder方法来显示所订购的项目。这是我到目前为止所做的。

>class ExpressMeal:
>>   def __init__(self):
>>>      self._meat = ' '
         self._side = ' '
     def chooseMeat(self):       
         return self._meat
     def chooseSide(self):
         return self._side
     def displayOrder(self):
两个文件中的

init 方法只有self参数。我必须使用此构造函数初始化实例变量以清空字符串。我必须调用ExpressMeal构造函数。另外,我想调用它 ExpressMeal类的displayOrder方法到此文件。我怎么能这样做?我提前道歉,因为我无法解决这个问题太多,因为我不明白如何使expressMeal.py工作。

from expressMeal import ExpressMeal
class MegaMeal(ExpressMeal):
    def __init__(self):
         base = super()
         self._drink = ' '
         self._dessert = ' '

我必须将megaMeal.py导入主模块文件,并要求用户选择快餐或大餐。 此外,我必须创建适当的对象并调用其方法来输入和显示客户选择的项目。我怎样才能实现这个 我被困住了。我不明白我是怎么想把变量调用(对于expressMeal只是肉,而且对于megaMeal我必须称肉,侧,饮料和甜点)到主模块,如果__init__只是假设有自我参数,没有别的。这可能吗? 以下显示了在此程序上运行的示例

  

Enter 1 for express meal Enter 2 for mega meal: 1 You chose express meal Enter 1 for chicken sandwich Enter 2 for cheese burger: 2 Enter 1 for fries Enter 2 for chips: 1 Items ordered: cheese burger fries

程序假设在完成时执行这样的操作 我并不是要求它完全为我完成。但是,如果我可以获得如何使它与例子一起工作的帮助。任何帮助都非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:1)

在Python中,“官方”常规方式是(在Python 3中)

class MegaMeal(ExpressMeal):
    def __init__(self):
        super().__init__()
        self._drink = ' '
        self._dessert = ' '

一种适用于Python 3和2的方式,并且IMO需要更少的“魔力”来理解用

替换super调用
ExpressMeal.__init__(self)

在我看来,使用Python 2的super太令人困惑,无法在你的关卡中被理解(或者甚至只是被记忆),所以只留下它。我知道高兴的Python程序员甚至不知道super存在。