Error

Hello,
Please can anyone help me with an error my code is producing.
It is the Basta Fazoolin’ challenge

https://www.codecademy.com/courses/learn-python-3/projects/basta-fazoolin

I get an error every time I try the print operation shown below:

print(flagship_store.available_menus(1400))

Full Code

class Franchise:

  def __init__(self, address, menus):

    self.address = address

    self.menus = menus

  def __repr__(self):

    return self.address

  def available_menus(self, time):

      available_menu = []

      for menu in self.menus:

        if time >= menu.start_time and time <= menu.end_time:

          available_menu.append(menu)

      return available_menu

class Menu:

  def __init__(self, name, items, start_time, end_time):

    self.name = name

    self.items = items

    self.start_time = start_time

    self.end_time = end_time

  def __repr__(self):

    return "We serve " + self.name + " from " + str(self.start_time) + "to" + str(self.end_time)

  def calculate_bill(self, purchased_items):

    bill = 0

    for purchased_item in purchased_items:

      if purchased_item in self.items:

        bill += self.items[purchased_item]

    return bill

brunch_items = {'pancakes': 7.50, 'waffles': 9.00, 'burger': 11.00, 'home fries': 4.50, 'coffee': 1.50, 'espresso': 3.00, 'tea': 1.00, 'mimosa': 10.50, 'orange juice': 3.50}

brunch_menu = Menu("Brunch", brunch_items, 1100, 1600)

early_bird_items = {'salumeria plate': 8.00, 'salad and breadsticks (serves 2, no refills)': 14.00, 'pizza with quattro formaggi': 9.00, 'duck ragu': 17.50, 'mushroom ravioli (vegan)': 13.50, 'coffee': 1.50, 'espresso': 3.00,}

early_bird_menu = Menu("Early_bird", early_bird_items, 1300, 1800)

dinner_items = {'crostini with eggplant caponata': 13.00, 'ceaser salad': 16.00, 'pizza with quattro formaggi': 11.00, 'duck ragu': 19.50, 'mushroom ravioli (vegan)': 13.50, 'coffee': 2.00, 'espresso': 3.00,}

dinner_menu = Menu("Dinner", dinner_items, 1700, 2300)

kids_items = {'chicken nuggets': 6.50, 'fusilli with wild mushrooms': 12.00, 'apple juice': 3.00}

kids_menu = Menu("Kids", kids_items, 1100, 2100)

print(brunch_menu)

print(brunch_menu.calculate_bill(["pancakes", "home fries", "coffee"]))

print(early_bird_menu.calculate_bill(['salumeria plate', 'mushroom ravioli (vegan)']))

menus = ["brunch_menu", "early_bird_menu", "dinner_menu", "kids_menu"]

flagship_store = Franchise("1232 West End Road", menus)

new_installment = Franchise("12 East Mulberry Street", menus)

print(flagship_store)

print(flagship_store.available_menus(1400))

your menu items:

menus = ["brunch_menu", "early_bird_menu", "dinner_menu", "kids_menu"]

are simple strings, while they should be instances of your menu class.

like the error says:

AttributeError: 'str' object has no attribute 'start_time'

your Menu classes do have a start time attribute:

    self.start_time = start_time
1 Like

Thanks very much, I am wondering why I couldn’t figure it out myself