전에 올린 포스트에서는 모듈에 대해서 다뤄보았다.
패키지는 모듈이 2개 이상 모인 것들이다.
먼저 간단하게 패키지 폴더를 만들고 하위폴더를 만들어 주겠다.
상위 폴더의 이름은 Travel이고, 하위폴더는 __init__.py, Thailand.py, Vietnam.py를 만들어 준다.
그리고 main.py는 Travel 폴더 밖에 속한다.
__init__ .py는 현재 디렉토리를 패키지파일로 만든다는 뜻이다.
또한 __all__ 을 사용할 수 있다.
현재 패키지 Travel에는 Thailand.py와 Vietnam.py 모듈이 존재한다.
그렇기 때문에 모듈을 불러올때 __all__ 에서 모듈의 이름을 지정해주지 않으면
Nameerror가 발생한다. 그렇기 때문에 아래와 같이 정의를 해주어야 한다.
__all__ = ["Vietnam", "Thaniland"]
# init 파일은 패키지를 초기화 시킨다.
# __all__ 는 현재 디렉토리를 패키지로 취급하게 만들며, 코드를 실행하거나 __all__ 변수를 설정할 수 있다.
코드는 아래와 같다.
class ThanilandPackage:
def detail(self):
print('[태국 패키지 3박 5일] 방콕, 파타야 여행(야시장 투어) 50만원')
class VietnamPackage:
def detail(self):
print('[베트남 패키지 3박 5일] 방콕, 다냥 효도 여행 60만원')
Class 이름은 각자 자신의 이름 + Package를, self는 자기 자신을 뜻한다는 뜻이다.
self는 따로 정리해서 공부가 거의 다 되었다고 생각하면 복습을 잘 할수 있게끔 올리도록 하겠다.
우리는 아까 Travel 파일 안에 패키지 파일을 만들고 실행 파일은 따로 바깥에 빼두었다. 그 파일이 main.py이다.
main.py의 코드는 아래와 같으며, 정말 간단하다.
import Travel.Thailand
trip_to = Travel.Thailand.ThanilandPackage()
trip_to.detail()
위는 import로 모듈을 가져오는 방법이고, Travel.Thailand를 통해서 모듈을 가져오고 trip_to 라는 변수에 ThanilandPackage() 클래스를 넣어준다.
그리고 마지막으로 trip_to.detail()을 하여 실행한다.
(detail)은 ThanilandPackage() 클래스 안에 있는 메서드이다.
이렇게 잘 나온다.
또 from을 사용하는 방법이 있다.
from Travel.Thailand import ThanilandPackage
trip_to = ThanilandPackage()
trip_to.detail()
Travel.Thailand 에서 ThanilandPackage모듈을 불러오고 ThanilandPackage에 속하는 detail() 모듈을 넣어준다.
결과는 동일하다