내 패키지 계층 : 악기 파일의코드 스타일 - 패키지의 이름 공간 "병합"
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...
는 이제 클래스 오히려 서브 모듈에 비해, 패키지의 네임 스페이스의
상단에 앉아있다. 내 질문은 : 이것은 좋은 생각입니까? 클래스는 모듈이 속한 모듈과 동일한 이름을 갖기 때문에 최상위 레벨에서 클래스를 가져 오면 모듈을 사용할 수 없게됩니다. 이것은 나를 약간 짜증나게합니다 - 이것을하는 더 좋은 방법이 있습니까?
클래스를 단일 모듈에 넣는 것은 옵션이 아닙니다. 사람들은 앞으로 패키지에 들어갈 새 파일을 작성할 것이며 기존 파일을 수정하지 못하게 할 것입니다. –