次のシナリオを検討してください。
function を含むモジュールが
M定義されています。m.pyf次のように呼び出すことができます。
import M; M.f()モジュールのサイズが大きくなり、1 つのファイルに収めることが現実的ではなくなります。
MサブモジュールM.X、M.Yに分割しM.Z、 に以下を入れますM/__init__.py。from .X import * from .Y import * from .Z import * __all__ = ["f"]元のコードは引き続き機能します。
import M; M.f()
ただし、コードの新しいコンシューマーは、誤ってサブモジュールに直接アクセスする可能性があります。
import M.X;
M.X.f()
これを防ぎたいのですが、すべてのコードがサブモジュールではなく、一貫して M を直接アドレス指定しているようにします。
サブモジュールは内部コード編成のためのものであり、M を参照すると、将来的に簡単に再編成できる可能性が残ります。
1 つのオプションは、サブモジュール_Xに 、_Y、および_Zそれらが内部であることを伝える名前を付けることです。それは推奨されるアプローチですか?