"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python의 순환 종속성을 어떻게 극복할 수 있나요?

Python의 순환 종속성을 어떻게 극복할 수 있나요?

2024년 12월 22일에 게시됨
검색:460

How to Break Free from Circular Dependencies in Python?

Python에서 순환 종속성을 피하는 방법

순환 종속성은 소프트웨어 개발에서 일반적인 문제가 될 수 있으며, 특히 계층화된 아키텍처나 복잡한 모듈 구조로 작업할 때 더욱 그렇습니다. Python에서 순환 종속성은 가져오기 오류 및 속성 오류를 포함하여 여러 가지 문제로 이어질 수 있습니다.

순환 종속으로 이어질 수 있는 시나리오

순환 종속성을 초래할 수 있는 일반적인 시나리오 중 하나는 클래스가 두 개인 경우입니다. 서로의 인스턴스를 속성으로 의존합니다. 예:

class A:
    def __init__(self, b_instance):
        self.b_instance = b_instance

class B:
    def __init__(self, a_instance):
        self.a_instance = a_instance

이 예에서 A는 B의 인스턴스를 초기화해야 하고 B는 A의 인스턴스를 초기화해야 하여 순환 종속성을 형성합니다.

피하는 방법 순환 종속성

Python에서 순환 종속성을 피하려면 다음 전략을 고려하십시오:

1. 가져오기 연기

한 가지 접근 방식은 실제로 필요할 때까지 다른 모듈 가져오기를 연기하는 것입니다. 이는 종속성을 캡슐화하는 함수나 메서드를 사용하여 수행할 수 있습니다. 예:

def get_a_instance():
    from b import B  # Import B only when a_instance is needed
    return A(B())

def get_b_instance():
    from a import A  # Import A only when b_instance is needed
    return B(A())

2를 반환합니다. 순환 깨기

또 다른 접근 방식은 중간 개체나 데이터 구조를 도입하여 순환 종속성을 깨는 것입니다. 예를 들어, A와 B 모두의 인스턴스를 생성하고 관리하는 팩토리 클래스를 생성할 수 있습니다.

class Factory:
    def create_a(self):
        a_instance = A()
        b_instance = self.create_b()  # Avoid circular dependency by calling to self
        a_instance.b_instance = b_instance
        return a_instance

    def create_b(self):
        b_instance = B()
        a_instance = self.create_a()  # Avoid circular dependency by calling to self
        b_instance.a_instance = a_instance
        return b_instance

결론

깨끗하고 유지 관리 가능한 코드베이스를 유지하려면 순환 종속성을 피하는 것이 중요합니다. 위에서 설명한 기술을 활용하면 순환 종속성을 효과적으로 깨고 이로 인해 발생할 수 있는 문제를 예방할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3