I have learned OOP in python recently and I am facing a problem when I call a method of a class it requires me to enter a positional self argument
class Restaurant:
menu_items = ["tea", "coffee", "milk"]
book_table = {"1": "not booked", "2": "not booked", "3": "not booked"}
customers_order = {}
def add_menu_item(self):
item = input("Enter an item to add to menu: ")
self.menu_items.append(item)
def print_table_reservation(self):
print("table reservation: ", self.book_table)
def all_reserved(self):
no_table_left = True
for i in self.book_table:
if self.book_table[i] == "not booked":
no_table_left = False
return no_table_left
def book_a_table(self):
name = input("What's your name: ")
self.print_table_reservation()
if self.all_reserved():
print("Sorry all tables are reserved")
else:
while True:
num = input("what is the number of table[1, 2, 3]: ")
if self.book_table[num] == "not booked":
self.book_table[num] = name
break
else:
print("the table is booked plz select another one")
continue
def print_menu(self):
print("the menu: ", self.menu_items)
def take_order(self):
name = input("What's your name: ")
list1 = []
if name in self.book_table:
while True:
answer = input("Do you want to order")
if answer == "yes" or "Yes":
while True:
self.print_menu()
order = input("Select an item from the menu")
if order in self.menu_items:
list1.append(order)
break
else:
print("Item not in menu, please reselect")
continue
else:
break
self.customers_order[name] = list1
def print_customer_order(self):
name = input("What's your name")
if name in self.customers_order:
print("Your order : ", self.customers_order[name])
else:
print("You have not given an order")
coffee = Restaurant
coffee.book_a_table()
when i call book a table function it says error missing one "self" poitional argument if I fill it with coffee I stiil cant fill it in the functions inside why is it requiring an argument?