2016-04-12 19 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() 

Yukarıdaki örnek kodum, öncelikle bir değer soracak ve entry adlı değişkene depolayacaktır. Daha sonra MyClassB isimli ikinci sınıf, giriş değerini işledikten sonra entry içindeki değeri kurtaracak, yeni bir tane f adında yeni bir değişkene kaydedilecektir; bu, MyClassC adlı üçüncü sınıfa ve daha sonra da birinci sınıfa geçecektir. Son olarak üçüncü sınıf, f değerinin bir miktar işlenmesini yapar ve p numaralı başka bir değişkenin içine kaydeder. kullanıcı programı çalıştırdığında kodum çalışmalıdır ve buna benzerdi olacaktınız nasılSınıf ve örnek arasında geçen değerler

:

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

böylece çıkış olmalıdır:

90 
90.1 

Ne yazık ki benim sorundur MyClassC değerini myClassA'a iletmeyen bu işe yaramıyor. İlk dersten iki argümanı geçmem gerektiğini söylüyor ama 2.sınıfı çalıştırdıktan sonra değeri alacağım. Örnekleri başlatırken sorun yaşadığımı düşünüyorum, birisi tanımladığım şekilde çalışmak için kodumu düzeltebilir mi? hat

c = MyClassC() 

yılında

+0

ilave olabilir unutmayın olabilir: Burada

Demek istediğim de bu cevap, bir giriş eksik .. – trans1st0r

+1

'__in kullanmamalısın giriş/çıkış için it__'. – syntonym

cevap

0

o yaratılan MyClassC iki bağımsız örneklerini, MyClassA.__init__() içinde bir ve MyClassB.__init__() ayrı bir olduğundan yaşadığınız sorun

c = MyClassC(b.f) 
1

olmalıdır .

kolay yolu düzeltmek için - mutlaka iyi - Getirmek istediğiniz zaman MyClassB.__init__() mağaza henüz başka örneği özelliğinde oluşturur MyClassC örneği olun ve sonra o nesnenin özelliğine bakın olacaktır p değeri.

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

Yoksa sınıfa MyClassC

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

değerini p ayarlamak ama bu durum

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 
İlgili konular