title: UnboundLocalError: local variable 'cars' referenced before assignment
body: <p>I am making a program where I store and display an inventory of cars through a menu. However, I keep on receiving the error:</p>
  
  <pre><code>".py", line 24, in car_invent
      cars = cars.Car(make, model, mileage, price, doors)
  UnboundLocalError: local variable 'cars' referenced before assignment"
  </code></pre>
  
  <p>I've already imported the module in the beginning and I don't understand why it gives me this error</p>
  
  <p>My code is </p>
  
  <pre><code>import cars
  
  def print_desc(item):
      print "Make:", item.get_make()
      print "Model:", item.get_model()
      print "Mileage:", item.get_mileage()
      print "Price:", item.get_price()
  
  def car_invent():
      car_invent = []
  
      print "Enter data for the cars."
  
      num_cars = input("Enter number of cars: ")
  
      for count in range(num_cars):
          make = raw_input("Enter the make: ")
          model = input("Enter the year model: ")
          mileage = input("Enter the mileage: ")
          price = input("Enter the price: ")
          doors = input("Enter the number of doors: ")
  
          cars = cars.Car(make, model, mileage, price, doors)
  
          car_invent.append(cars)
  
      return car_invent
  
  def truck_invent():
      truck_invent = []
  
      print "Enter data for the trucks."
  
      num_trucks = input("Enter number of trucks: ")
  
      for count in range(num_trucks):
          make = raw_input("Enter the make: ")
          model = input("Enter the year model: ")
          mileage = input("Enter the mileage: ")
          price = input("Enter the price: ")
          drive_type = input("Enter the drive type: ")
  
          trucks = cars.Truck(make, model, mileage, price, drive_type)
  
          truck_invent.append(truck)
  
      return truck_invent
  
  def suv_invent():
      suv_invent = []
  
      print "Enter data for the cars."
  
      num_suv = input("Enter number of SUVs: ")
  
      for count in range(1, num_suv):
          make = raw_input("Enter the make: ")
          model = input("Enter the year model: ")
          mileage = input("Enter the mileage: ")
          price = input("Enter the price: ")
          pass_cap = input("Enter passenger capacity: ")
  
          suv = cars.SUV(make, model, mileage, price, pass_cap)
  
          suv_invent.append(suv)
  
      return suv_invent
  
  
  def read_invent(car_invent, truck_invent, suv_invent):
      print "USED CAR INVENTORY"
      print "=================="
      print "The following car is in inventory."
  
      for item in car_invent:
          print_desc(item)
          print "Number of doors:", item.get_doors()
  
      print "The following pickup truck is in inventory."
  
      for item in truck_invent:
          print_desc(item)
          print "Drive type:", item.get_drive_type()
  
  
      print "The following SUV is in inventory."
  
      for item in suv_invent:
          print_desc(item)
          print "Passenger Capacity:", item.get_pass_cap()
  
  def menu():
      print "MENU"
      print "====="
      print "1. Enter data for inventory"
      print "2. Display inventory"
      print "3. Quit"
  
  def main():
      menu()
  
      choice = input("Enter choice: ")
      while choice != 3:
  
          if choice == 1:
              cars = car_invent()
              trucks = truck_invent()
              suv = suv_invent()
              choice = input("Enter choice: ")
  
          elif choice == 2:
              read_invent(cars, trucks, suv)
              choice = input("Enter choice: ")
  
          else:
              print "Invalid choice"
              choice = input("Enter choice: ")
  
  main()
  </code></pre>
  
  <p>Here is also the module for reference:</p>
  
  <pre><code>class Automobile:
  
      def __init__(self, make, model, mileage, price):
          self.__make = make
          self.__model = model
          self.__mileage = mileage
          self.__price = price
  
      def set_make(self, make):
          self.__make = make
  
      def set_model(self, model):
          self.__model = model
  
      def set_mileage(self, mileage):
          self.__mileage = mileage
  
      def set_price(self, price):
          self.__price = price
  
      def get_make(self):
          return self.__make
      def get_model(self):
          return self.__model
  
      def get_mileage(self):
          return self.__mileage
      def get_price(self):
          return self.__price
  
  class Car(Automobile):
      def __init__(self, make, model, mileage, price, doors):
          Automobile.__init__(self, make, model, mileage, price)
  
          self.__doors = doors
  
      def set_doors(self, doors):
          self.__doors = doors
  
      def get_doors(self):
          return self.__doors
  
  class Truck(Automobile):
      def __init__(self, make, model, mileage, price, drive_type):
          Automobile.__init__(self, make, model, mileage, price)
  
          self.__drive_type = drive_type
  
      def set_drive_type(self, drive_type):
          self.__drive_type = drive_type
  
      def get_drive_type(self):
          return self.__drive_type
  
  class SUV(Automobile):
      def __init__(self, make, model, mileage, price, pass_cap):
          Automobile.__init__(self, make, model, mileage, price)
  
          self.__pass_cap = pass_cap
  
      def set_pass_cap(self, pass_cap):
          self.__pass_cap = pass_cap
  
      def get_pass_cap(self):
          return self.__pass_cap
  </code></pre>