2017-01-19 7 views
0

なぜ私が取得しているのかわかりませんNameError:name '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の内部Carクラスをインデントするという意味ではありませんでした仮定のPython 3.5.2 IDLE

+0

車の中から車を輸入しようとしてから、車のクラスにアクセスしてください – Bobby

+3

自動車の車内で車のクラスをインデントしたのですか? – denvaar

+0

@Bobbyいいえサイコロ。まだ同じエラーが発生しています。 – limaBEAN

答えて

2

を使用しています。

あなたが使用する必要があります
Automobile.__init__(self, make, model, mileage, price) 

:あなたは非インデントそのクラス1レベルべき、との代わりに、

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、mileage、price)'がさらに良いでしょう。無関係な 'super'は素晴らしいです。 – ShadowRanger

+0

@ShadowRanger編集をありがとう。私はコードブロックにトレースバックを入れるべきかどうか議論していました。もっときれいに見えます。 – limaBEAN

関連する問題