2017-01-19 2 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 

I 클래스로 자동차를 설정 생각했습니다 것은 '자동차' 정의 어떤 도움을 주시면 감사하겠습니다.

나는 당신이 Automobile의 내부 Car 클래스를 들여 의미하지 않았다 가정 파이썬 3.5.2 IDLE

+0

차량에서 '자동차 가져 오기'를 사용해보고 차 클래스에 액세스하십시오. – Bobby

+3

자동차 내부에서 차 클래스를 들여 쓰시겠습니까? – denvaar

+0

@Bobby 주사위가 없습니다. 여전히 같은 오류가 발생합니다. – limaBEAN

답변

2

을 사용하고 있습니다. 당신은해야되지 않은 들여 쓰기 수준 한 단계, 대신의 :

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

을 그리고 당신은 파이썬 3을 사용하는 경우, 당신은 다만 수 :

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

당신은 사용해야

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

굉장합니다. 팁 고마워. – limaBEAN

+1

실제로, 파이썬 3 코드가 주어지면'super() .__ init __ (make, model, mileage, price)'가 더 좋다. 아무 말도 안되는'슈퍼'가 좋다. – ShadowRanger

+0

@ShadowRanger 편집 해 주셔서 감사합니다. 추적 코드를 코드 블록에 넣어야하는지 아닌지에 대해 논쟁을 벌였습니다. 훨씬 깨끗해 보인다. – limaBEAN

관련 문제