2016-04-12 10 views
1
class MyClassA(object): 
    def __init__(self): 
     entry = input("Insert a value ::: ") 
     b = MyClassB(entry) #To pass the variable entry to class MyClassB 
     c = MyClassC() #Initializied MyClassC to be ready for receive the value p 
     self.x = b.f #To get back the value f from MyClassB 
     print(self.x) 
     self.x1 = c.p #To get back the value f from MyClassC 
     print(self.x1) 

class MyClassB(object): 
    def __init__(self, M): 
     self.f = M * 10 # f will contain (the value entry from MyClassA *10) 
     c = MyClassC(self.f) #To pass variable f to class MyClassC 

class MyClassC(object): 
    def __init__(self,passedVar): 
     self.p = passedVar + 0.1 # p will contain (the value entry from MyClassB + 0.1) 

h = MyClassA() 

上記は私のサンプルコードです。まず、値を求めてentryという名前の変数に格納します。 MyClassBという名前の2番目のクラスは、エントリ値を処理した後にentryの値を回復します。新しい変数はfという新しい変数に格納され、MyClassCという名前の新しいクラスに渡され、さらにファーストクラスに戻ります。 最後に、3番目のクラスはf値の処理を行い、もう1つの変数pに格納します。クラスとインスタンスの間で値を渡す

ユーザーがプログラムを実行し、これは、それがどのようになるかであるとき、私のコードは動作するはず方法は次のとおりですので、出力があるべき

Insert a value ::: 9 (assume the user typed 9 here) 

90 
90.1 

残念ながら私の問題がありますMyClassCからmyClassAに値を渡しても機能しません。 最初のクラスから2つの引数を渡す必要がありますが、2番目のクラスを実行した後に値を取得するとしています。 私はインスタンスの初期化に問題があると思います。誰かが私のコードを修正して、私が記述した方法で動作させることができますか?ライン

c = MyClassC() 

+0

追加を発生する可能性があることに注意しておくことができあなたは入力がありません。 – trans1st0r

+1

'__inそれは入出力用です。 – syntonym

答えて

0

それが作成されるMyClassCの二つの独立したインスタンス、MyClassA.__init__()に1つ、MyClassB.__init__()内の別々の1があるので、あなたが抱えている問題がある

c = MyClassC(b.f) 
1

する必要があります。

簡単にそれを修正するには - 必ずしも最高 - あなたが取得したい場合MyClassB.__init__()店、それはまた別のインスタンス属性で作成MyClassCインスタンス行い、その後、そのオブジェクトの属性を参照することですpの値。ここで

は私の意味は次のとおりです。

class MyClassA(object): 
    def __init__(self): 
     entry = input("Insert a value ::: ") 
     b = MyClassB(entry) # To pass the variable entry to class MyClassB 
####### c = MyClassC() # Initializied MyClassC to be ready for receive the value p 
     self.x = b.f # To get back the value f from MyClassB 
     print(self.x) 
     self.x1 = b.c.p # To get back the value p from MyClassC instance created in MyClassB 
     print(self.x1) 

class MyClassB(object): 
    def __init__(self, M): 
     self.f = M * 10 # f will contain (the value entry from MyClassA *10) 
     self.c = MyClassC(self.f) # Pass variable f to class MyClassC and save instance 

class MyClassC(object): 
    def __init__(self, passedVar): 
     self.p = passedVar + 0.1 # p will contain (the value entry from MyClassB + 0.1) 

h = MyClassA() 
0

それともMyClassC

class MyClassC(object): 
    def __init__(self, passedVar): 
     MyClassC.p = passedVar + 0.1 

クラスに値pを設定したが、この状況が

class T(object): 

    def __init__(self, x): 
     T.x = x 
if __name__ == '__main__': 
    t1 = T(3) 
    print t1.x, T.x 
    t1.x = 1 
    print t1.x, T.x 
    t2 = T(2) 
    print t1.x, t2.x, T.x 
# output: 
3 3 
1 3 
1 2 2 
関連する問題