gpt4 book ai didi

python - 面向对象编程不带参数访问类中的函数(python)

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:24 24 4
gpt4 key购买 nike

编辑:我希望这能更清楚地表达我的担忧。 我知道这对于我正在寻求答案的问题有很多信息。此外,expressMeal 和 megaMeal 位于两个不同的文件中。用户必须输入 1 或 2,我想用它来调用实例变量。我的问题以粗体显示,其余的是该计划的一些背景

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

我必须编写一个关于一家快餐店的Python程序。它有两种餐食供顾客选择。快餐包括肉类和配菜。丰盛的一餐包括肉类、配菜、饮料和甜点。在这两个文件中, 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 导入到主模块文件中,并要求用户选择 Express Meal 或 Mega Meal。 此外,我还必须创建适当的对象并调用其方法来输入和显示客户选择的项目。我怎样才能实现这个目标我被困住了。我不明白我应该如何将变量(对于expressMeal只是肉和配菜,但对于megaMeal我必须调用肉,配菜,饮料和甜点)到主模块,如果 __init__ 只假设有self 参数,仅此而已。这可能吗?下面显示了该程序的运行示例

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

程序完成后应该像这样执行我并不要求它完全为我完成。但如果我能获得有关如何使其与示例一起工作的帮助。非常感谢任何帮助。预先感谢您。

最佳答案

在 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 的存在。

关于python - 面向对象编程不带参数访问类中的函数(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41033757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com