원래 파일로 돌아가서 다시 코드를 실행해 봅시다. 이번에는 thailand 모듈에도 이상 없이 접근해 코드가 제대로 동작하는 것을 확인할 수 있습니다.
ch11.py
from travel import *
# trip_to = vietnam.VietnamPackage()
trip_to = thailand.ThailandPackage() # 태국
trip_to.detail()
실행결과 |
[태국 3박 5일 패키지] 방콕, 파타야 여행(야시장 투어) 50만 원 |
정확히 말하면 __all__은 from travel import *와 같이 *를 이용해 패키지 내 모듈들을 가져다 쓰려고 하는 경우에 import할 대상을 정의하는 역할을 합니다. 패키지 내에 __init__.py 파일이 없거나 __all__ 리스트 안에 아무런 모듈을 넣지 않더라도 from travel import vietnam, thailand와 같이 작성하면 여전히 vietnam, thailand 모듈을 사용할 수 있다는 점을 알아두세요.
1분 퀴즈
3. 패키지의 __init__.py 파일에서 사용할 수 있는 __all__에 관해 잘못 설명한 것은?
① __all__은 반드시 정의해야 하는 것은 아니다.
② 리스트 형태로 모듈명을 넣으면 해당 모듈을 공개로 설정한다.
③ __all__에 포함되지 않은 모듈은 어떤 방법으로든 사용할 수 없다.
④ from 패키지명 import *를 했을 때 import할 대상을 정의할 수 있다.