2017-12-18 4 views
0

2 개의 클래스를 함께 연결하기 위해 종속성 삽입을 시도하고 있습니다. 아래의 코드 예를 들어 :의존성 삽입을 여러 개 사용하여 서로 다른 클래스의 변수를 연결하는 방법은 무엇입니까?

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() 클래스 two()의 재산 'A'를 가지고 있으며, 클래스 two() 클래스 one()의 재산 b 있습니다. 하지만 분명히 내가 self.C_two을 모르기 때문에 self.C_one = one() 클래스에서 three() 오류가 발생합니다. 예제에서와 같이 두 클래스 간의 상호 링크를 만들려면 어떻게해야합니까?

답변

2

onetwotwoone 다음 유일한 솔루션 인이 one 또는 two 중의 2 단계 초기화 사용할 필요가 필요가있는 경우 :

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

관련 문제