2017-12-18 372 views
0

我正在嘗試使依賴注入將兩個類連接在一起。 例如用下面的代碼:如何通過多重依賴注入連接不同類的變量?

class one(): 
    def __init__(self,two): 
     self.b = 0 
     self.C_two = two 

    def compute(self): 
     print(self.a) 
     self.b = self.b + 1 

    @property 
    def a(self): 
     return self.C_two.a 


class two(): 
    def __init__(self,one): 
     self.a = 0 
     self.C_one = one 

    def compute(self): 
     self.a = self.a + 1 

    @property 
    def b(self): 
     return self.C_one.b 

class three(): 
    def __init__(self): 
     self.C_one = one() 
     self.C_two = two(self.C_one) 
     self.b = 0 

    def compute(self): 
     self.C_one.compute() 
     print('C_one a=',self.C_one.a) 
     print('C_two a=',self.C_two.a) 

C_three = three() 
for i in range(5): 
    C_three.compute() 

one()類具有屬性「A」 two()類和類two()具有one()類的屬性b。但很明顯,我得到three()self.C_one = one()行的錯誤,因爲我還不知道self.C_two。如何在我的示例中創建兩個類之間的相互鏈接?

回答

2

如果one需要twotwo需要one那麼你唯一的解決辦法是使用兩種onetwo的兩階段初始化:

class three(): 
    def __init__(self): 
     self.C_one = one(None) 
     self.C_two = two(self.C_one) 
     self.C_one.two = self.C_two 

,但它仍然是一個可能的設計氣味...

+0

好吧,我會使用它。謝謝 – ymmx