1. ホーム
  2. python

[解決済み] __init__.py を使ってグローバル変数を定義することはできますか?

2022-04-30 02:43:31

質問

あるパッケージのすべてのサブモジュールで利用可能な定数を定義したいのですが、どうすればよいですか?最適な場所は __init__.py ファイルを作成します。しかし、どうすればいいのかわからない。例えば、いくつかのサブパッケージがあり、それぞれにいくつかのモジュールがあるとします。これらのモジュールからその変数にアクセスするにはどうしたらいいでしょうか?

もちろん、これが全く間違っていて、もっと良い代替案があるのなら、それを教えて欲しいです。

解決方法は?

に入れることができるはずです。 __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 .