4

私のパッケージ階層:

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...

そのため、クラスはサブモジュールではなく、パッケージの名前空間の先頭に配置されます。私の質問は:これは良い考えですか?クラスの名前はそれらが属するモジュールと同じであるため、最上位でクラスをインポートすると、モジュールが使用できなくなります。これは私を少しきしむようにします-これを行うためのより良い方法はありますか?

4

1 に答える 1

4

どのように行うかは許容されますが、すべてのパッケージ/モジュール名を1)PEP 8で指定されている規則であり、2)シャドウイングの問題を取り除くために小文字に変更することをお勧めします。

于 2012-09-27T17:01:56.007 に答える