これは本当に個人的な好みであり、Pythonモジュールのレイアウトと関係があります。
と呼ばれるモジュールがあるとしましょうerikutils
。モジュールにする方法は2つあります。erikutils.pyというファイルがあり、erikutilsというディレクトリsys.path
があり、その中に空のファイルがあります。次に、、と呼ばれるモジュールがたくさんあり、それらをの下のサブモジュールにしたいとします。したがって、 fileutils.py、procutils.py、およびparseutils.pyという名前の.pyファイルを作成します。sys.path
__init__.py
fileutils
procutils
parseutils
erikutils
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で、私が考えることができる最良の例はですdjango.db.models.fields
。すべてのdjango*Fieldクラスは、 django / db / models/fieldsディレクトリの__init__.py
ファイルで定義されています。彼らはすべてを架空のdjango/db / models / fields.pyモデルに詰め込みたくなかったので、これを行ったと思います。そのため、いくつかのサブモジュール(related.py、files.pyなど)に分割し、作成された*Field定義をfieldsモジュール自体に貼り付けました(したがって、)。__init__.py