강좌 관리 및 데이터 비교

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 코스 인스턴스를 생성하고, 딕셔너리에 저장하며, 데이터 백업을 수행하고, 코스 정보를 업데이트하고, 업데이트된 정보를 이전 데이터와 비교하는 등 코스 정보를 생성하고 관리하는 방법을 배우게 됩니다.

👀 미리보기

Linux - New Data
COURSE Linux
Lab count: 20
Public: True
Price: 199
Linux - Old Data
COURSE Linux
Lab count: 10
Public: True
Price: 99
---------------------------
Python - New Data
COURSE Python
Lab count: 10
Public: True
Price: 99
Python - Old Data
COURSE Python
Lab count: 7
Public: True
Price: 79
---------------------------

🎯 과제

이 프로젝트에서는 다음을 배우게 됩니다:

  • CourseBootcampCourse 클래스를 생성하는 방법
  • BootcampCourse의 인스턴스를 생성하고 딕셔너리에 저장하는 방법
  • 코스 정보의 백업을 만드는 방법
  • 각 코스의 랩 수와 가격을 업데이트하는 방법
  • 업데이트된 코스 정보를 이전에 저장된 데이터와 비교하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 상속의 개념과 Python 에서 서브클래스 (subclass) 를 생성하는 방법을 이해합니다.
  • 코스 정보를 업데이트하고 비교하는 메서드를 구현합니다.
  • 딕셔너리를 사용하여 코스 데이터를 저장하고 관리합니다.
  • 데이터 백업을 수행하고 업데이트된 정보를 이전 기록과 비교합니다.

Course 및 BootcampCourse 클래스 생성

이 단계에서는 CourseBootcampCourse 클래스를 생성하는 방법을 배우게 됩니다.

  1. /home/labex/project 디렉토리에 있는 course.py 파일을 엽니다.

  2. Course 클래스에서:

    • 코스 이름, 공개 여부 및 랩 수를 입력받는 __init__ 메서드를 정의합니다.
    • 랩 수를 반환하는 count 속성을 구현합니다.
    • 객체 유형을 반환하는 typename 메서드를 구현합니다.
    • 코스 이름과 typename을 출력하는 info 메서드를 구현합니다.
    • 코스의 공개 상태를 반환하는 is_public 메서드를 구현합니다.
    class Course:
     OBJECT_TYPE = "COURSE"
    
     def __init__(self, name, public, lab_count):
         self.name = name
         self.public = public
         self.lab_count = lab_count
    
     @property
     def count(self):
         return self.lab_count
    
     def typename(self):
         return self.OBJECT_TYPE
    
     def info(self):
         print(self.typename(), self.name)
    
     def is_public(self):
         return self.public
  3. BootcampCourse 클래스에서:

    • 코스 이름, 랩 수 및 가격을 입력받는 __init__ 메서드를 정의합니다. Course 클래스의 __init__ 메서드를 호출하고 공개 상태를 True로 설정합니다.
    • 새로운 랩 수와 새로운 가격을 입력받아 해당 속성을 업데이트하는 update 메서드를 구현합니다.
    • Course 클래스의 info 메서드를 호출한 다음 랩 수, 공개 상태 및 가격을 출력하는 info 메서드를 구현합니다.
    class BootcampCourse(Course):
     def __init__(self, name, lab_count, price):
         super().__init__(name, True, lab_count)
         self.price = price
    
     def update(self, lab_count, price):
         self.lab_count = lab_count
         self.price = price
    
     def info(self):
         super().info()
         print("Lab count:", self.count)
         print("Public:", self.public)
         print("Price:", self.price)
✨ 솔루션 확인 및 연습

강좌 생성 및 관리

이 단계에서는 BootcampCourse의 인스턴스를 생성하고, 딕셔너리에 저장하며, 코스 정보의 백업을 만드는 방법을 배우게 됩니다.

  1. if __name__ == "__main__": 블록에서:

    • BootcampCourse의 두 인스턴스인 linux_coursepython_course를 생성합니다.
    • course_dict라는 딕셔너리를 생성하고, 코스 이름을 키로 사용하여 두 코스 인스턴스를 저장합니다.
    • 딥 카피 (deep copy) 를 만들어 course_dict의 백업을 생성하고 backup_course_dict에 저장합니다.
    if __name__ == "__main__":
       linux_course = BootcampCourse("Linux", 10, 99)
       python_course = BootcampCourse("Python", 7, 79)
    
       ## build course dict
       course_dict = {"Linux": linux_course, "Python": python_course}
    
       ## copy and backup course dict
       backup_course_dict = copy.deepcopy(course_dict)
✨ 솔루션 확인 및 연습

강좌 정보 업데이트

이 단계에서는 각 코스의 랩 수와 가격을 업데이트하는 방법을 배우게 됩니다.

  1. if __name__ == "__main__": 블록에서:

    • update 메서드를 사용하여 linux_course의 랩 수와 가격을 업데이트합니다.
    • update 메서드를 사용하여 python_course의 랩 수와 가격을 업데이트합니다.
    ## update lab count and price
    linux_course.update(20, 199)
    python_course.update(10, 99)
✨ 솔루션 확인 및 연습

강좌 정보 비교

이 단계에서는 업데이트된 코스 정보를 이전에 저장된 코스 정보와 비교하는 방법을 배우게 됩니다.

  1. if __name__ == "__main__": 블록에서:
    1. course_dict의 키 ("Linux" 및 "Python") 를 반복합니다.
    2. 각 키에 대해:
    • 코스 이름과 "- New Data" 레이블을 출력합니다.
    • course_dict에서 해당 코스 인스턴스에 대해 info 메서드를 호출합니다.
    • 코스 이름과 "- Old Data" 레이블을 출력합니다.
    • backup_course_dict에서 해당 코스 인스턴스에 대해 info 메서드를 호출합니다.
    • 구분선 (separator line) 을 출력합니다.
## compare with backup
for name in ("Linux", "Python"):
    print(name, "- New Data")
    course_dict[name].info()
    print(name, "- Old Data")
    backup_course_dict[name].info()
    print("---------------------------")

course.py 파일을 실행하여 출력을 확인합니다.

python3 course.py

출력:

Linux - New Data
COURSE Linux
Lab count: 20
Public: True
Price: 199
Linux - Old Data
COURSE Linux
Lab count: 10
Public: True
Price: 99
---------------------------
Python - New Data
COURSE Python
Lab count: 10
Public: True
Price: 99
Python - Old Data
COURSE Python
Lab count: 7
Public: True
Price: 79
---------------------------
✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.