次のシナリオを検討してください。
function を含むモジュールが
M
定義されています。m.py
f
次のように呼び出すことができます。
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
それらが内部であることを伝える名前を付けることです。それは推奨されるアプローチですか?