2017-12-18 361 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