質問

っては、どのモデルシステムdjangoの作品と思うんです。

知っていることを作成します空 __init__.py ファイルを指定すると、現在のディレクトリがパッケージです。そのときに一部変数 __init__.py その輸入*ない不具合を修正しました。

がdjangoを追加し、バンチのかな---。インポート諸表を定義し、バンチの授業 __init__.py.なぜですか?しているのではないだだけの汚?ある理由を必要としたこのコード __init__.py?

役に立ちましたか?

解決

すべての輸入 __init__.py はないと使用できない場合があ輸入のパッケージ(ディレクトリ)が含まれます。

例:

./dir/__init__.py:

import something

./test.py:

import dir
# can now use dir.something

編集:忘れても、コード __init__.py に初めて輸入しているモジュールからのディレクトリです。なので通常は置、パッケージレベルのトの再計算コードです。

EDIT2:dgrant指摘される可能性を混乱私の例です。に __init__.py import something インポートすることができずモジュールの必要はありませんからソフトウェアによるものです。例えば、今まで代替することはできないと import datetime, そのトップレベル test.py このスニペットを作:

import dir
print dir.datetime.datetime.now()

import dir.some_module_in_dir
print dir.datetime.datetime.now()

下線はすべての名前を与え __init__.py, また輸入モジュール、関数やクラス、自動的に利用可能パッケージの名前空間まで輸入のパッケージ又はモジュールのソフトウェアによるものです。

他のヒント

で個人の嗜好に、真のレイアウトのpythonモジュールです。

例えば、モジュールと呼ばれ erikutils.二つの型があることができるモジュールを与えられ、というファイルと erikutils.pysys.path やすいというディレクトリ erikutilssys.path__init__.py ファイルることを確認できます。してみましょう信じてチームのモジュールと呼ばれ fileutils, procutils, parseutils び出すためのものではありませんとするサブモジュールの下で erikutils.できます。pyというファイル fileutils.py, procutils.py, は、 parseutils.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の例を考えることができるで django.db.models.fields.すべてのdjango-フィールドクラスが定義されています __init__.py ファイルの django/db/モデル分野 ディレクトリです。思いこんでいに詰め込みする仮想 django/db/models/fields.py モデルのように分割でにいくつかのsubmodules(related.py, files.py, 例えばやって作られた-フィールド定義のモジュール自体が __init__.py).

を使用 __init__.py ファイルでパッケージの内部構造からは見ることができないのです。の場合、内部構造の変化(例えばいつの脂肪モジュールの二つ)だけを調整する __init__.py ファイルがないのコードに依存するパッケージです。することもできます。部品のパッケージ目に見えないため、例えばていない場合、一般の利用.

注意利用できるの del コマンドで典型的な __init__.py あるていれば次のようになるはずです:

from somemodule import some_function1, some_function2, SomeObject

del somemodule

在する場合には、その結果生じる分割 somemodule の新しい __init__.py う:

from somemodule1 import some_function1, some_function2
from somemodule2 import SomeObject

del somemodule1
del somemodule2

外部からのパッケージも見てます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top