Python에서 순환 가져오기 종속성을 어떻게 처리합니까?

Mary-Kate Olsen
풀어 주다: 2024-11-03 10:43:29
원래의
342명이 탐색했습니다.

How Do You Handle Circular Import Dependencies in Python?

Python의 순환 가져오기 종속성: 순환 가져오기 해결

Python 모듈로 작업할 때 순환 가져오기 종속성이 발생할 수 있습니다. 다음 예를 고려하십시오.

  • a/__init__.py: c 패키지
  • a/b/__init__.py를 가져옵니다. 아무것도 가져오지 않음
  • a/b/c/__init__.py: 아무것도 가져오지 않음
  • a/b/c/c_file.py: a.b.d를 가져옴

a/__init__.py 파일에 액세스할 때 a.b.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>
로그인 후 복사

가져오기를 필요한 순간으로 연기하여 순환 종속성을 방지합니다.

패키지 정의 재구성

순환 종속성은 때때로 패키지 디자인의 결함을 나타낼 수 있습니다. 패키지 정의를 철저히 검토하려면 순환성을 제거하기 위해 리팩터링이 필요할 수 있습니다.

기타 옵션

상황에 따라 추가 옵션은 다음과 같습니다.

  • 타사 가져오기 라이브러리 사용: "importlib" 또는 "importlib_metadata"와 같은 모듈은 순환 종속성을 처리하는 기능을 제공합니다.
  • 가져오기 경로 수정: 조정 Python 경로를 사용하면 가져오기 문제를 해결할 수 있지만 이 접근 방식은 주의해서 사용해야 합니다.

위 내용은 Python에서 순환 가져오기 종속성을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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