2016-06-16 13 views
1

内部クラスの値を設定して、どのクラスからでも呼び出したいと思います。私は(外部)クラスのために同じものを使用し、値はset defで変更されますが、その関数の外では変更されません。内部クラスのvariabeを正しく呼び出す方法

私のコードは、私が設定してshowWheelColorを呼び出し、この

class car(vehicle): 
    __vehicle_kind = "car" 
    __nb_of_wheels = 4 
    __nb_of_doors = 2 

    def showKind(self): 
     return self.__vehicle_kind 

    def showNbOfWheels(self): 
     return self.__nb_of_wheels 

    def showNbOfDoors(self): 
     return self.__nb_of_doors 

    class wheels(vehicle): 
     wheel_color = "grey" 
     wheel_diametre = "16" 

     def setWheelColor(self, color): 
      self.wheel_color = color 
      print self.wheel_color 

     def showWheelColor(self): 
      return self.wheel_color 

次のようになります。

new.wheels().setWheelColor(wheel_color) 
print new.wheels().showWheelColor() 

が、ショーは以前の値を返します。 これを正しく行うにはどうすればいいですか?

+0

Pythonで「プライベート」とは考えないことから始めましょう。 –

+0

「車輪」と「車」の両方は、私にとって意味のない「車両」の派生物です。 'vehicle'クラスのコードを与えたり、その背後にロジックを説明したりできますか?(車輪はどうやって車になりますか?) –

答えて

0

例にはいくつか問題があります。主な問題は、クラス変数とインスタンス変数/メンバーを混乱させることです。 wheel_color = "grey"は、wheelのすべてのインスタンスに適用されるクラス変数ですが、self.wheel_color = colorは、その特定のインスタンスにのみ適用されるインスタンス変数を参照します。 が新しいインスタンスにあなたが最初wheelsの新しいインスタンスを取得し、それがwheel_colorだし、その後、別のインスタンスを作成し、それがwheel_colorsだチェックすると呼ばれていますすべての時間を提供しますが、あなたは持っていないので、という事実に加えて

この"grey"

関連する問題