Something that strikes me as an issue is this assignment…
self.menus = menus
I only bring this up because there is a Menu class and one would expect self.menus to be a collection of that type of object.
What this means is the parameter is not needed, only the initial value, an empty list. That would take the place of available menus in terms of creation.
def add_menu(self, menu):
if isinstance(menu, Menu):
Treat the above as pseudo-code until it is tested.
The reasoning here is that if all the menus are Menu class instances, then they all have the same inherited methods, AND, they inherit the parent class methods as well.
if Menu.start_time <= time <= Menu.end_time:
would be written on the instance, not the class…
if menu.start_time <= time <= menu.end_time: