python - 关于如何使用面向对象编程来简化程序的任何想法
问题描述
这是我的任务:为菜单计划创建类。在课程的帮助下,应该可以为酒店的餐厅创建菜单卡。
为此目的,应该有一个“MenuCard”类。这应该包括卡片的日期和一个或多个课程菜单。在 Python 中使用适当的数据类型作为日期。应该可以使用 add_course 方法将课程一个接一个地添加到菜单卡中。课程菜单应该有一个“课程”类。这有一个名称(例如 starter 或 first course)。此外,每道菜都有一个或多个菜肴,可以使用“add_dish”方法添加。为此,要组装'Dish'班,这是食品管理局的名称,是否是素食主义者。在所有类中使用str函数在屏幕上显示菜单卡。
附加任务:为三道菜菜单 ThreeCourseMenuCard 创建一个类,其中现有的类序列。在这门课上,你必须确保课程不超过(或正好)三门。
通过控制类中的实例来创建您自己的个人地图。
我已经对此进行了编程,但是对于我认识的某些用户来说,这太复杂了。有人可以给我关于如何简化这个程序的任何想法。先感谢您。
这是我的代码:
#! /usr/bin/python3
import datetime, locale
class Dish():
def __init__(self, name, veggy):
self.__name = name
self.__veggy = veggy
def __str__(self):
if self.__veggy == bool(1):
return "{} (vegetarisch)".format(self.__name)
else:
return "{}".format(self.__name)
class Course():
def __init__(self, name):
self.__name = name
def add_dish(self):
for i in range(len(self.__name[1])):
print(Dish(self.__name[1][i][0], self.__name[1][i][1]))
if i < len(self.__name[1])-1:
print("oder")
def __str__(self):
return "\n\n{}\n".format(self.__name[0][0])
class MenuCard():
def __init__(self, date):
self.__date = date.strftime('%A, %d.%m.%Y')
def add_course(self, new_course):
print(Course(new_course))
Course(new_course).add_dish()
def __str__(self):
return "\n\nMenukarte fuer {}".format(self.__date)
vorspeise = [["Vorspeise"],[
["Carpaggio vom Rind auf knackigem Blattsalat", 0],
["Honigmelone mit hausgemachtem Speck vom Hängebauchschwein", 0]
]]
suppe = [["Suppe"],[
["Kräftige Rindssuppe mit Eiertörtchen", 1]
]]
erster_gang = [["1. Gang"],[
["Salat vom Buffet", 0]
]]
zweiter_gang = [["2. Gang"],[
["Wiener Schnitzel mit Kartoffelsalat", 0],
["Wildsaibling an Herbstgemüse auf Safranrisotto", 0],
["Saftiges Hirschgulasch mit Kastanienrotkraut und Semmelknödel", 0],
["Spinatlasagne mit frischen Tomaten", 1]
]]
nachspeise = [["Nachspeise"],[
["Vanilleparfait auf Himbeerspiegel", 1],
["Luftige Topfenknödel mit roter Grütze", 0]
]]
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
menu = MenuCard(datetime.datetime(2020, 11, 9))
print(menu)
gaenge = [vorspeise, suppe, erster_gang, zweiter_gang, nachspeise]
for gang in gaenge:
menu.add_course(gang)
解决方案
推荐阅读
- java - 同步中不同监控对象的用途
- webpack - 使用 Webpack 动态循环魔术注释
- postgresql - 带返回的 Postgres 递归函数 - 在 dbeaver 上
- elixir - 如何在 Ecto 中查询字段和计数?
- azure-devops - 在 VSTS (Azure DevOps) 中禁用同一管道的同时构建
- javascript - 为什么 Chrome 开发工具会显示未绑定到我的元素的点击事件侦听器?
- scheme - 方案中的语义列表
- excel - 进行更改时自动更新工作表 - VBA Excel
- reactjs - React js过滤器选择
- django - 通过示例在 django 书的 /blog/ 处获取 NoReverseMatch