课程管理与数据比较

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何创建和管理课程信息,包括创建课程实例、将它们存储在字典中、对数据进行备份、更新课程信息,以及将更新后的信息与之前的数据进行比较。

👀 预览

Linux - 新数据
课程:Linux
实验数量:20
公开:是
价格:199
Linux - 旧数据
课程:Linux
实验数量:10
公开:是
价格:99
---------------------------
Python - 新数据
课程:Python
实验数量:10
公开:是
价格:99
Python - 旧数据
课程:Python
实验数量:7
公开:是
价格:79
---------------------------

🎯 任务

在这个项目中,你将学习:

  • 如何创建 CourseBootcampCourse
  • 如何创建 BootcampCourse 的实例并将它们存储在字典中
  • 如何对课程信息进行备份
  • 如何更新每门课程的实验数量和价格
  • 如何将更新后的课程信息与之前保存的数据进行比较

🏆 成果

完成这个项目后,你将能够:

  • 理解继承的概念以及如何在 Python 中创建子类
  • 实现更新和比较课程信息的方法
  • 利用字典来存储和管理课程数据
  • 对数据进行备份,并将更新后的信息与之前的记录进行比较

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/constructor("Constructor") python/ObjectOrientedProgrammingGroup -.-> python/inheritance("Inheritance") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/for_loops -.-> lab-302713{{"课程管理与数据比较"}} python/dictionaries -.-> lab-302713{{"课程管理与数据比较"}} python/classes_objects -.-> lab-302713{{"课程管理与数据比较"}} python/constructor -.-> lab-302713{{"课程管理与数据比较"}} python/inheritance -.-> lab-302713{{"课程管理与数据比较"}} python/data_serialization -.-> lab-302713{{"课程管理与数据比较"}} end

创建 Course 和 BootcampCourse 类

在这一步中,你将学习如何创建 CourseBootcampCourse 类。

  1. 打开位于 /home/labex/project 目录下的 course.py 文件。

  2. Course 类中:

    • 定义 __init__ 方法,该方法接受课程名称、是否公开以及实验数量作为参数。
    • 实现 count 属性以返回实验数量。
    • 实现 typename 方法以返回对象类型。
    • 实现 info 方法以打印课程名称和 typename
    • 实现 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 方法,该方法接受新的实验数量和新价格,并更新相应的属性。
    • 实现 info 方法,该方法调用 Course 类的 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 的字典,并将这两个课程实例存储在其中,使用课程名称作为键。
    • 通过对 course_dict 进行深拷贝并将其存储在 backup_course_dict 中来创建 course_dict 的备份。
    if __name__ == "__main__":
       linux_course = BootcampCourse("Linux", 10, 99)
       python_course = BootcampCourse("Python", 7, 79)
    
       ## 构建课程字典
       course_dict = {"Linux": linux_course, "Python": python_course}
    
       ## 复制并备份课程字典
       backup_course_dict = copy.deepcopy(course_dict)

更新课程信息

在这一步中,你将学习如何更新每门课程的实验数量和价格。

  1. if __name__ == "__main__": 代码块中:

    • 使用 update 方法更新 linux_course 的实验数量和价格。
    • 使用 update 方法更新 python_course 的实验数量和价格。
    ## 更新实验数量和价格
    linux_course.update(20, 199)
    python_course.update(10, 99)

比较课程信息

在这一步中,你将学习如何将更新后的课程信息与之前保存的课程信息进行比较。

  1. if __name__ == "__main__": 代码块中:

    1. 遍历 course_dict 中的键(即 "Linux" 和 "Python")。
    2. 对于每个键:
    • 打印课程名称和标签“- 新数据”。
    • course_dict 中相应的课程实例调用 info 方法。
    • 打印课程名称和标签“- 旧数据”。
    • backup_course_dict 中相应的课程实例调用 info 方法。
    • 打印一条分隔线。
## 与备份进行比较
for name in ("Linux", "Python"):
    print(name, "- 新数据")
    course_dict[name].info()
    print(name, "- 旧数据")
    backup_course_dict[name].info()
    print("---------------------------")

运行 course.py 文件以查看输出。

python3 course.py

输出:

Linux - 新数据
COURSE Linux
Lab count: 20
Public: True
Price: 199
Linux - 旧数据
COURSE Linux
Lab count: 10
Public: True
Price: 99
---------------------------
Python - 新数据
COURSE Python
Lab count: 10
Public: True
Price: 99
Python - 旧数据
COURSE Python
Lab count: 7
Public: True
Price: 79
---------------------------
✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。