Development Tip

__init__.py 사용

yourdevel 2020. 11. 18. 21:34
반응형

__init__.py 사용


__init__.py내 프로젝트에서 파이썬 파일 의 사용 시나리오 또는 디자인 목표를 이해하는 데 어려움이 있습니다.

다음 파일을 포함하는 '모델'디렉토리 (패키지 참조)가 있다고 가정합니다.

  1. __init__.py
  2. meta.py
  3. solrmodel.py
  4. mongomodel.py
  5. samodel.py

두 가지 사용 방법을 찾았습니다 __init__.py.

  1. solrmodel.py,, mongomodel.py에서 사용해야하는 공통된 정의가 있습니다 samodel.py. __init__.py모든 * model.py 클래스에 대한 기본 / 공통 정의로 사용할 수 있습니까 ? 이것은 내가 가져와야 함을 의미합니다 model/__init__.py.

  2. 또는,이 __init__.py자체에 solrmodel.py, mongomodel.py, samodel.py의 수입 정의를 가진다 그것은이 같은 클래스 나 함수의 쉽게 가져올 수 있습니다 :

    # file: __init__.py
    
    from mongomodel import *
    from solrmodel import *
    from samodel import *
    

    ( import *권장되지 않음을 알고 있으며 컨벤션으로 사용했습니다)

위의 두 시나리오 중에서 결정할 수 없었습니다. 더 많은 사용 시나리오가 __init__.py있으며 사용법을 설명 할 수 있습니까?


__init__.py많은 패키지가 초기화 할 것이 없기 때문에 내가 작성 하는 대부분의 파일은 비어 있습니다.

내가 초기화를 원할 수있는 한 가지 예는 패키지로드 시간에 한 번에 한꺼번에 한꺼번에 데이터 (파일, DB 또는 웹에서)를 읽고 싶을 때입니다.이 경우 훨씬 더 좋습니다. __init__.py별도의 "초기화 모듈"이 아닌 패키지의 개인 함수에 해당 읽기를 넣고 패키지의 모든 단일 실제 모듈에서 해당 모듈을 중복으로 가져옵니다 (쓸모없고 반복적이고 오류가 발생하기 쉽습니다. 이는 분명히 언어에 의존하는 경우입니다.) 패키지의이 보장 __init__.py 되는 패키지에 모든 모듈 전에 한 번로드는 분명히 훨씬 더 파이썬입니다!).

다른 구체적이고 권위있는 의견 표현에 대해서는 Python 표준 라이브러리의 일부인 다양한 패키지에서 취해진 다양한 접근 방식을 살펴보십시오.


__init__.py패키지 내에서 모듈을 가져올 때 의 내용을 가져옵니다.

세 번째 시나리오를 간과하고 있습니다. 공통 부분을 별도의 모듈에 넣은 다음 다른 모듈이이를 가져 와서 __init__.py패키지 외부에서 사용할 것을 남겨 두는 것입니다. 이것이 제가 일반적으로 따르는 관행입니다.

참고 URL : https://stackoverflow.com/questions/2361124/using-init-py

반응형