__init__.py を使用してグローバル変数を定義できますか? 質問する

__init__.py を使用してグローバル変数を定義できますか? 質問する

パッケージのすべてのサブモジュールで使用できる定数を定義したいのですが、__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

おすすめ記事