私のパッケージ階層:
InstrumentController/
__init__.py
instruments/
__init__.py
_BaseInstrument.py
Keithley2000.py
# etc...
機器ファイルの内容:
# _BaseInstrument.py
class _BaseInstrument(object):
"""Base class for instruments"""
# etc...
# Keithley2000.py
from InstrumentController.instruments._BaseInstrument import _BaseInstrument
class Keithley2000(_BaseInstrument):
# etc...
モジュールの階層を掘り下げることなく、ユーザーがクラスにアクセスできるようにしたいと思います。入力する必要があるのはfrom InstrumentController.instruments import Keithley2000
、ではなく、だけfrom InstrumentController.instruments.Keithley2000 import Keithley2000
です。
この目的のために、私はこのような行をたくさん持っていますInstrumentController.instruments.__init__
:
from .Keithley2000 import Keithley2000
from .StanfordSR830 import StanfordSR830
# etc...
そのため、クラスはサブモジュールではなく、パッケージの名前空間の先頭に配置されます。私の質問は:これは良い考えですか?クラスの名前はそれらが属するモジュールと同じであるため、最上位でクラスをインポートすると、モジュールが使用できなくなります。これは私を少しきしむようにします-これを行うためのより良い方法はありますか?