ファイルを含むいくつかのサブディレクトリを含むパッケージがあり__init__.py
ます。これらのファイルは、チェックおよび初期化ジョブを実行します。
現在、これらのフォルダーのいくつかにはimport
、それぞれの__init__.py
. これらを「隠しモジュール」と呼びましょう。慣例として、アンダースコアを使用してそれらを明確にしています。
私の内部で次のことを行うのは悪い考えですか__init__.py
(_implementation.py
同じフォルダーにある):
import os, sys
if sanity_check_successful:
from ._implementation import *
__all__ = sys.modules[__name__ + "._implementation"].__all__
サニティチェックが失敗するたびに、パッケージ内のそれぞれのモジュールレベルで意味のあるエラー情報を提供しようとしています。
__all__
「隠しモジュール」から配列をコピーするなど、これは悪い考えですか? もしそうなら、なぜ、そしてより良い代替手段がありますか?
おまけ: この 2 行をもっと簡潔に書く方法はありますか?:
from ._implementation import *
__all__ = sys.modules[__name__ + "._implementation"].__all__
特に、ある場所では文字列を使用し"._implementation"
、別の場所ではモジュール名として使用しなければならないことにうんざりしています。