그것은 실제로 개인적인 취향이며 파이썬 모듈의 레이아웃과 관련이 있습니다.
라는 모듈이 있다고 가정 해 보겠습니다 erikutils
. 거기는 모듈 될 수 있다는 두 가지 방법이 있습니다, 하나는라는 파일이 erikutils.py을 당신에 sys.path
또는 당신이라는 디렉토리가 erikutils 온을 sys.path
빈과 __init__.py
그 안에 파일. 그럼 당신이 전화 모듈의 무리가 있다고 가정하자 fileutils
, procutils
, parseutils
그리고 당신이 그 미만의 서브 모듈이되고 싶어요 erikutils
. 따라서 fileutils.py , procutils.py 및 parseutils.py 라는 .py 파일을 만듭니다 .
erikutils
__init__.py
fileutils.py
procutils.py
parseutils.py
어쩌면 당신은하지에 속하지 않는 몇 가지 기능을 가지고 fileutils
, procutils
또는 parseutils
모듈을. 라는 새 모듈을 만들고 싶지 않다고 가정 해 보겠습니다 miscutils
. 그리고 다음과 같이 함수를 호출 할 수 있기를 원합니다.
erikutils.foo()
erikutils.bar()
하기보다는
erikutils.miscutils.foo()
erikutils.miscutils.bar()
그래서 erikutils
모듈은 파일이 아니라 디렉토리 이기 때문에 우리는 내부에 함수를 정의해야합니다.__init__.py
합니다.
장고에서 내가 생각할 수있는 가장 좋은 예는 django.db.models.fields
. 모든 django * Field 클래스는 django / db / models / fields 디렉토리 의 __init__.py
파일에 정의되어 있습니다 . 나는 그들이 가상으로 학원의 모든 것을 원하지 않았기 때문에 그들이 이런 짓을 생각 장고 / DB / 모델 / fields.py 모델들은 (몇 서브 모듈로를 분할 있도록 related.py , files.py 예를 들어,)와 그들은 만들어진 * Field 정의를 fields 모듈 자체에 붙였습니다 (따라서 __init__.py
).