더북(TheBook)

실행하니 ‘vietnam’이 정의되지 않았다며 오류가 발생하네요. 왜 그럴까요? import할 때 *로 표시한다는 것은 travel 패키지에 있는 모든 기능을 가져다 쓴다는 뜻인데 말이죠.

사실 패키지는 만든 사람이 공개 범위를 설정할 수 있습니다. 패키지에 포함된 모듈 중에서 import되길 원하는 것만 공개하고 나머지는 비공개로 둘 수가 있지요.

travel 패키지를 만들 때 함께 생성한 __init__.py 파일을 열어 다음과 같이 내용을 작성합니다. __all__이라는 변수에 리스트 형태로 모듈명을 넣으면 해당 모듈을 공개로 설정합니다. 이때 all 앞뒤로 언더바를 2번씩 적어야 한다는 점을 주의해 주세요.

__init__.py

__all__ = ["vietnam"] # vietnam 모듈 공개

__init__.py 파일을 저장하고 원래 파일로 돌아가서 다시 코드를 실행해 봅시다. 이번에는 베트남 패키지여행 상품 정보가 잘 출력됩니다.

ch11.py

from travel import *

trip_to = vietnam.VietnamPackage() # 베트남
trip_to.detail()

실행결과 icon_con

[베트남 3박 5일 패키지] 다낭 효도 여행 60만 원
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.