티스토리 뷰
누군가와 함께 여행을 갈 때는 서로 여행 스타일이 비슷해야 더 즐거운 시간을 보낼 수 있습니다.
아래 표의 각 항목에 대해서 여러분이 선호하시는 여행 방법을 체크해두시면 친구와 함께 여행을 갈 때 서로를 더 배려할 수 있을 텐데요.
구분 | 선택 1 | 선택 2 |
경비 | N분의 1 | 각자 |
계획 | 철저 | 즉흥 |
숙박 | 호텔 | 게스트 하우스 |
교통 | 택시 | 대중교통 |
식사 | 맛집 | 아무집 |
성향 | 부지런 | 여유 |
어쩌면 여행을 하는 시간보다 여행을 준비하는 과정이 더 오래 걸릴 수도 있습니다. 특히 해외 여행을 떠나게 되는 경우 항공사 선택에서부터 여행 일정, 숙소, 차량 렌트, 시간표 작성 등 많은 부분을 신경써야 하는데, 이 때 여행사에서 제공하는 패키지 상품을 이용하면 훨씬 수월하게 여행을 할 수 있습니다. 비행기에서부터 현지 도착 후 이동, 숙소, 식당도 모두 다 예약이 되어 있으며 시간별로 어느 곳을 방문할지에 대한 계획은 물론 여행 경비 또한 미리 알 수 있지요. 단, 다른 여행객들과 함께 여행을 하게 되므로 자유로운 여행을 원하는 분들에게는 맞지 않을 수도 있습니다.
파이썬에도 패키지가 있는데요.
마치 여행사 패키지 상품을 통해 항공, 숙소, 차량을 한꺼번에 예약할 수 있는 것처럼 파이썬에서는 여러 모듈들을 모아 놓은 집합을 패키지라고 하며, 패키지는 보통 하나의 폴더 안에 여러 모듈 파일들로 구성됩니다.
이해를 돕기 위해 여러분이 신규 여행사 관련 프로젝트를 담당하게 되었다고 가정하겠습니다. 이 여행사는 태국과 베트남 패키지 여행 상품을 제공합니다.
Visual Studio Code 에서 새로운 폴더를 하나 만들고 이름은 travel 로 하여 새로운 패키지를 생성합니다. 그리고 travel 폴더 밑에 태국 패키지 상품을 위한 모듈인 thailand.py 파일, 그리고 베트남 패키지 상품을 위한 모듈인 vietnam.py 파일을 만들겠습니다. 마지막으로 __init__.py 라는 파일도 함께 만들겠습니다.
travel ├ __init__.py ├ thailand.py └ vietnam.py |
먼저 태국 여행 패키지 상품을 위한 thailand.py 파일에 내용을 채워보겠습니다.
ThailandPackage 란 이름의 클래스를 만들고 detail() 이라는 메소드를 하나 정의하는데 이 메소드가 호출되면 태국 패키지 상품에 대한 요약 정보가 출력되도록 합니다.
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원")
비슷한 형태로 vietnam.py 파일에 VietnamPackage 란 이름으로 베트남 여행 패키지 클래스도 정의하겠습니다.
class VietnamPackage:
def detail(self):
print("[베트남 패키지 3박 5일] 다낭 효도 여행 60만원")
__init__.py 는 일단은 그대로 두고, 기존에 연습하던 practice.py 파일에서 travel 패키지를 사용해보도록 하겠습니다. 이 때 앞에서 작성한 2개 파일은 반드시 저장을 해주셔야 합니다.
practice.py 에서는 travel 패키지의 thailand 모듈을 import 하고, 모듈에 정의된 ThailandPackage 객체를 만들고 detail() 메소드를 호출해보겠습니다.
import travel.thailand
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
실행해보면 다음과 같이 태국 여행 패키지 상품에 대한 정보가 올바르게 출력됩니다.
[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원 |
단, import 구문을 사용할 때는 그 대상이 모듈이나 패키지여야 하며, 클래스나 함수는 import 를 할 수 없습니다.
import travel.thailand.ThailandPackage # 클래스 직접 import 불가
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
import 구문을 위처럼 변경하면 다음과 같은 에러가 발생합니다.
ModuleNotFoundError: No module named 'travel.thailand.ThailandPackage'; 'travel.thailand' is not a package |
반면에 from ~ import 구문을 사용하면 모듈, 패키지, 클래스, 함수 모두 import 를 할 수 있습니다. 다음과 같이 travel.thailand 모듈에서 ThailandPackage 클래스를 import 하도록 코드를 수정하면 되는데요. 이 때는 import 한 클래스 객체를 생성할 때 앞에서 했던 것과는 다르게 travel.thailand 부분은 생략하고 클래스 이름인 ThailandPackage 를 통해 접근 가능합니다.
from travel.thailand import ThailandPackage # travel.thailand 모듈에서 ThailandPackage 클래스 가져오기
trip_to = ThailandPackage() # travel.thailand. 는 생략
trip_to.detail()
실행해보면 정상적으로 태국 패키지 상품 정보가 출력됩니다.
[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원 |
베트남 정보도 확인해볼까요?
이번에는 조금 다르게 travel 패키지에서 vietnam 모듈을 import 해오도록 하겠습니다. 이 경우 모듈명인 vietnam. 을 통해 모듈 내 VietnamPackage 클래스에 접근이 가능합니다.
from travel import vietnam # travel 패키지에서 vietnam 모듈 가져오기
trip_to = vietnam.VietnamPackage() # travel. 은 생략
trip_to.detail()
실행해보면 베트남 패키지 상품이 올바르게 출력됩니다.
[베트남 패키지 3박 5일] 다낭 효도 여행 60만원 |
어떤 대상을 import 하느냐에 따라서 대상 내에 접근하기 위한 코드도 달라져야 한다는 점을 주의 부탁드립니다.
'파이썬 강의 > 기본편' 카테고리의 다른 글
[파이썬 기본편] 11-4.모듈 직접 실행 (4) | 2021.03.26 |
---|---|
[파이썬 기본편] 11-3.__all__ (1) | 2021.03.25 |
[파이썬 기본편] 11-1.모듈 (3) | 2021.03.23 |
[파이썬 기본편] 10-5.퀴즈 #9 (6) | 2021.03.22 |
[파이썬 기본편] 10-4.finally (0) | 2021.03.21 |
- Total
- Today
- Yesterday
- game
- onlineclass
- Colab
- 파이게임
- pygame
- 비주얼 스튜디오 코드
- Unity
- 행맨
- coloso
- Xcode
- repl.it
- c언어
- 나도코딩
- 환경설정
- pycharm
- 코랩
- GUI
- Tkinter
- Mac
- 아나콘다
- 주피터노트북
- Coding
- ChatGPT
- 파이썬
- Visual Studio Code
- 챗GPT
- vscode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |