パッケージのすべてのサブモジュールで使用できる定数を定義したいのですが、__init__.py
ルート パッケージのファイル内が最適だと思いました。しかし、その方法がわかりません。いくつかのサブパッケージがあり、それぞれに複数のモジュールがあるとします。これらのモジュールからその変数にアクセスするにはどうすればよいでしょうか。
もちろん、これが完全に間違っていて、もっと良い代替案があるのであれば、私はそれを知りたいです。
ベストアンサー1
それらを に入れることができるはずです__init__.py
。これは常に行われています。
mypackage/__init__.py
:
MY_CONSTANT = 42
mypackage/mymodule.py
:
from mypackage import MY_CONSTANT
print "my constant is", MY_CONSTANT
次に、mymodule をインポートします。
>>> from mypackage import mymodule
my constant is 42
それでも、定数がある場合は、それらを別のモジュール (constants.py、config.py など) に配置し、パッケージ名前空間で必要な場合はインポートするのが合理的です (おそらくベスト プラクティス)。
mypackage/__init__.py
:
from mypackage.constants import *
ただし、これによって、パッケージ モジュールの名前空間内の定数が自動的に含まれるわけではありません。パッケージ内の各モジュールは、 または から定数を明示的にインポートする必要がありmypackage
ますmypackage.constants
。