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?
 
     
    