2017-01-19 4 views
0

Не знаете, почему я получаю NameError: имя 'Automobile' не определен. Возможно, кто-то, кто не смотрел на это последние 20 минут, может помочь. Я начинаю думать, что это может быть отступ, но пока не слишком уверен.NameError: name 'Automobile' не определен

vehicles.py:

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 

car_demo.py:

import vehicles 

def main(): 
    used_car = vehicles.Car("Audi", 2007, 12500, 21500.00, 4) 

    print('Make:', used_car.get_make()) 
    print('Model:', used_car.get_model()) 
    print('Mileage:', used_car.get_mileage()) 
    print('Price:', used_car.get_price()) 
    print('# of doors:', used_car.get_doors()) 

main() 

Ошибка:

Traceback: 
import vehicles, class Automobile:, and class Car(Automobile) 

NameError: name 'Automobile' is not defined 

Я бы подумал, установив Automobile как класс определяет 'Automobile' Любая помощь будет оценена по достоинству.

Я использую Python 3.5.2 IDLE

+0

попробуйте использовать «из автомобилей импортировать автомобиль», а затем получить доступ к классу автомобиля – Bobby

+3

Вы имели в виду indent the car class inside of Automobile? – denvaar

+0

@Bobby Нет кубиков. По-прежнему возникает такая же ошибка. – limaBEAN

ответ

2

Я предполагаю, что вы не означает отступа Car класс внутри Automobile. Вы должны снимите отступа этот класс один уровень, и вместо того, чтобы:

Automobile.__init__(self, make, model, mileage, price) 

вы должны использовать:

super(Car, self).__init__(make, model, mileage, price) 

И если вы используете Python 3, вы можете просто сделать:

super().__init__(make, model, mileage, price) 
+0

Удивительный. Спасибо за совет. – limaBEAN

+1

На самом деле, учитывая его код Python 3, еще лучше: 'super() .__ init __ (make, model, distance, price)'. Нет-arg 'super' приятно. – ShadowRanger

+0

@ShadowRanger Спасибо за редактирование. Я обсуждал, должен ли я помещать трассировку в блок кода или нет. Выглядит намного чище. – limaBEAN

Смежные вопросы