Python에서 순환 가져오기 종속성을 해결하는 방법: 일반적인 함정

Mary-Kate Olsen
풀어 주다: 2024-10-31 11:53:31
원래의
273명이 탐색했습니다.

How to Resolve Circular Import Dependency in Python: A Common Pitfall

순환 가져오기 종속성: 일반적인 Python 함정

순환 가져오기 종속성을 만나면 특히 모듈이 자주 상호 연결되는 Python에서 실망스러울 수 있습니다. 이러한 예 중 하나는 패키지의 __init__.py가 다른 패키지를 가져오는 동안 두 번째 패키지 내의 파일이 첫 번째 패키지를 가져오려고 할 때 발생합니다.

제공된 디렉터리 구조를 고려하세요.

a/
    __init__.py
    b/
        __init__.py
        c/
            __init__.py
            c_file.py
        d/
            __init__.py
            d_file.py
로그인 후 복사

a's에서 __init__.py, c 패키지를 가져옵니다. 그러나 c 패키지 내에 있는 c_file.py는 a.b.d를 가져오려고 시도합니다. 이 순환 종속성으로 인해 런타임 시 b가 존재하지 않는다는 오류가 발생합니다.

문제 해결

한 가지 해결 방법은 가져오기를 연기하는 것입니다. 예를 들어, a/__init__.py에서 함수를 정의할 수 있습니다.

<code class="python">def my_function():
    from a.b.c import Blah
    return Blah()</code>
로그인 후 복사

반드시 필요할 때까지 가져오기를 지연함으로써 순환 종속성을 피할 수 있습니다. 그럼에도 불구하고 패키지 디자인을 다시 고려하는 것이 좋습니다. 이러한 종속성은 때때로 설계 결함이나 리팩토링이 필요하다는 신호일 수 있습니다.

위 내용은 Python에서 순환 가져오기 종속성을 해결하는 방법: 일반적인 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿