如何通过多个依赖注入连接不同类的变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过多个依赖注入连接不同类的变量?相关的知识,希望对你有一定的参考价值。

我正在尝试进行依赖注入以将两个类连接在一起。例如,使用以下代码:

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()

class one()具有类two()的属性'a',类two()具有b类的属性one()。但很明显我从self.C_one = one()班的three()行得到了一个错误,因为我还不知道self.C_two。如何在我的示例中创建两个类之间的互惠链接?

答案

如果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

但它仍然是一个可能的设计气味......

以上是关于如何通过多个依赖注入连接不同类的变量?的主要内容,如果未能解决你的问题,请参考以下文章

Spring依赖注入的方式

这些角度电子邮件指令代码片段如何连接

Android 片段和依赖注入

3------依赖注入

装配SpringBean--依赖注入

.NET 通过源码深究依赖注入原理