2
__all
으로 모듈을 관리하는 방법을 이해하려고합니다.파이썬 모듈 및 __all__
from database import session
I가 라인 __all__ = ['session']
또는 __all__ = ['engine.session']
을 추가하려고 :
main.py
|=> /database
|=> __init__.py
|=> engine (with variables engine, session, etc.)
이 지금은 같은 database
모듈에서 session
및 engine
인스턴스를 직접 가져올 수 있도록하려면 예를 들어, 나는 구조화 된 코드를 다음 한 __init__py
하지만 가져 오기를 시도 할 때 예외가 발생했습니다 AttributeError: 'modile' object has not attribute 'engine.session'
.
원하는 동작을 달성 할 수있는 방법이 있습니까?
이 솔루션을 주셔서 감사합니다,하지만, 난 여전히 질문이 - 내가 작성에 대해 귀찮게하지 않습니다 수 __init __ py''모든 필요한 클래스/함수/변수를 importting합니다. '__all__' - 이미 가져온 것들입니다. 그럼, __all__을 사용해야하는 이유는 무엇입니까? –
@ AlexG.P .:'__all__'을 사용하여 어떤 이름이 'importable'인지 표시합니다. 누군가가 데이터베이스로부터 가져 오기 *를하면 모듈의 네임 스페이스에있는 모든 ** 이름보다는 ** __all__에 나열된 이름 만 가져옵니다. –
아, 수입 유형의 감소를 줄일 수는 있지만 수입은 늘리지 않습니다. 대단히 감사합니다. –