#python #class #oop #inheritance
#python #класс #ооп #наследование
Вопрос:
Я написал программу, которая создает меню для ресторанов. В моем коде вы можете видеть, что создано три класса. Теперь я хочу создать класс с именем ‘ThreeCourseMenu’, который использует все эти три существующих класса. В этом классе ‘ThreeCourseMenu’ должно быть гарантировано, что существует не более (или точно) 3 курсов. Как я могу создать этот класс, используя все три других класса?
Вот мой код:
#class definitions
class MenuCard():
__date : str
def __init__(self, date):
self.__date = date
def add_course(self):
pass
def __str__(self):
return 'nMenü vom {}n'.format(self.__date)
class Course():
__name : str
def __init__(self, name):
self.__name = name
self.__dishes = []
def add_dish(self, dish_name):
self.__dishes.append(dish_name)
def __str__(self):
return '{}'.format(self.__name)
for i in self.__dishes:
return i
class Dish():
__name : str
__veggie : bool
def __init__(self, name, veggie):
self.__name = name
self.__veggie = veggie
def __str__(self):
if self.__veggie is True:
return '{} (veg)'.format(self.__name)
else:
return '{}'.format(self.__name)
#creating class instances
MenuDate = MenuCard('10.11.2020')
vorspeise = Course('Vorspeise')
vorspeise_gericht = Dish('Carpaggio vom Rind auf knackigem Blattsalat', False)
vorspeise_gericht2 = Dish('Gemischter Salat mit Dressing nach Tradition', True)
suppe = Course('nSuppe')
suppe_1 = Dish('Rindsuppe mit Beilage nach Wahl', False)
gang_eins = Course('n1. Gang')
gang_speise_1 = Dish('Salat mit Toppings nach Wahl', True)
gang_zwei = Course('n2. Gang')
gang_speise_2 = Dish('Schweinsbraten mit Kartoffelsalat', False)
gang_speise_3 = Dish('Rindersteak mit gebratenem Gemüse', False)
gang_speise_4 = Dish('Wienerschnitzel mit Pommes', False)
gang_speise_5 = Dish('Linsen-Chili mit Reis', True)
nachspeise = Course('nNachspeise')
nachspeise_1 = Dish('Apfelkuchen mit Vanillesauce', True)
nachspeise_2 = Dish('Schokoschnitte mit Schlagsahne', True)
#list for all instances to loop over
gang = [vorspeise, vorspeise_gericht, vorspeise_gericht2, suppe, suppe_1, gang_eins, gang_speise_1, gang_zwei,
gang_speise_2, gang_speise_3, gang_speise_4, gang_speise_5, nachspeise, nachspeise_1, nachspeise_2]
#output
print(MenuDate.__str__())
for food in gang:
gang_text = food.__str__()
print(gang_text)
Здесь я попытался создать этот класс, но я не знаю, зачем мне нужны именно эти три класса. Программа возвращает мне ошибку AttributeError, и я не знаю почему. Как я могу решить эту проблему или есть другой способ сделать это?
class ThreeCourseMenu():
__menucard : MenuCard
__course : Course
__dish : Dish
def __init__(self):
pass
def __str__(self):
count_courses = 0
while count_courses <= 3:
return self.__course
count_courses = 1
if count_courses == 3:
print("There are exactly 3 courses")
elif count_courses > 3:
print("There are more than 3 courses")
else:
print("There are not more than 3 courses")
Комментарии:
1. Вы пытались решить эту проблему? Если вы это сделали, пожалуйста, включите этот код. Если вы этого не сделали, пожалуйста, попробуйте, а затем повторно отправьте с ошибкой.
2. Да, извините, я забыл написать класс в основном коде. Теперь это доступно для просмотра.
3. Я бы рекомендовал прочитать realpython.com/lessons/class-and-instance-attributes