パッケージで使いまわしたいグローバル変数やインポートは__init__.py
と別ファイルの組み合わせで隠せます(見えにくくできます)。具体的には次の手順です。
- パッケージ名のディレクトリと
__init__.py
を作成する。 - グローバル変数やインポートを使いたいスコープを
file1.py
などに移動する。 __init__.py
で公開したいオブジェクトだけfile1.py
などからimport
する。
上記の手順でパッケージ外からimport パッケージ名
したときに__init__.py
以外のファイルで使っているグローバル変数やインポートが非表示になります。厳密にはimport パッケージ名.file1
で表示されますが、そこは使用者の使い方次第です。変数名やインポートエイリアス先頭の_
で内部使用を示す方法も組み合わせられます。
この方法はcomtypes
パッケージで知りました。このパッケージにはcomtypes.GUID
クラス(__init__.py
でimport
されたcomtypes.GUID.GUID
の別名)とcomtypes.GUID
ファイルが存在していて、comtypes.GUID
ファイルのグローバル変数_CLSIDFromString
は__init__.py
でimport
しないことで隠されています。