3

実装が(保守性のために)2つの内部サブモジュールに分割されているPythonパッケージがあります。ただし、ユーザーの観点からは、パッケージは1つのユニットとして表示されるはずなので、パッケージの__init__.py両方のサブモジュールはimport *、次のようにでインポートされます。

# filesystem layout:
mypkg/
    __init__.py
    subA.py # defines class A
    subB.py # defines class B

# __init__.py
from .subA import *
from .subB import *

これは、パッケージ機能の観点から意図したとおりに機能します。

>>> import mypkg
>>> a = mypkg.A() # works
>>> b = mypkg.B() # works

これらのクラスのインラインヘルプを直接検索する場合は、すべてが良好です。

>>> help(mypkg.A) # works
>>> help(mypkg.subA.A) # also works

問題は、トップレベルパッケージのヘルプを検索するだけの場合です。

>>> help(mypkg)

その場合、サブモジュールのクラスと関数は「自発的に」表示されません(ただし、それらの変数はDATAセクションに表示されます)。これは予想される/正しい動作ですか?それを回避して、ユーザーが実装/保守の便宜のためだけに存在するサブモジュールについて知る必要がないようにする方法はありますか?

4

1 に答える 1

1

私が知っている最善の解決策は、関連する文書化されたオブジェクト (クラス、関数、データ) を に追加すること__all__です__init__.py

于 2012-10-04T22:28:34.807 に答える