次のモジュール構造を持つPythonで小さなパッケージを書いています
package/
__init__.py
cls1.py
cls2.py
cls3.py
mod1.py
mod2.py
それぞれclsN.py
に単一のクラスClsN
があり、それぞれmodN.py
にそれらのクラスを使用するさまざまな関数が含まれています。インポート構造を次のようにしたい
package
package.Cls1
package.Cls2
package.Cls3
package.mod1
package.mod1.func1
...
package.mod2
package.mod2.func2
...
名前空間を汚染することなく。現在、 と を介してこれらのクラスのいずれかにアクセスできるという問題がpackage.Cls1
ありpackage.cls1.Cls1
、 で定義されているすべてのものpackage/cls1.py
(インポートを含む) にもアクセスできます。変数を設定しようとしました__all__
が、その間以外は何もしないようですfrom package import *
。Python がclsN
サブモジュールとして表示されないようにする方法はありますか? それとも、これらのファイル内のインポートを非表示にする方法ですか? ライブラリのユーザーが各クラスにアクセスする方法が 2 つあるのは望ましくありません。