← 返回 Day 45 正文

Day 45 · 练习与清单

Day 045 - 练习清单

📋 学习检查表

ORM 框架

REST API 客户端

学生管理系统

OOP 综合应用


🎯 练习题

练习 1:扩展 ORM 框架(⭐⭐)

任务:为 ORM 框架添加 DateTimeField 字段类型

要求: 1. 实现 DateTimeField 类,继承自 Field 2. 支持自动设置创建时间(auto_now_add) 3. 支持自动更新时间(auto_now) 4. 添加时间格式验证

参考代码:

python
class DateTimeField(Field):
    def __init__(self, auto_now_add=False, auto_now=False, **kwargs):
        super().__init__(**kwargs)
        self.auto_now_add = auto_now_add
        self.auto_now = auto_now

    def validate(self, value):
        # 验证时间格式
        pass

练习 2:API 客户端增强(⭐⭐)

任务:为 REST API 客户端添加认证管理功能

要求: 1. 支持多种认证方式(API Key、Bearer Token、Basic Auth) 2. 实现 Token 自动刷新机制 3. 添加请求频率限制(Rate Limiting) 4. 实现请求缓存

提示: - 使用策略模式实现不同认证方式 - 使用装饰器实现 Token 刷新 - 使用字典实现简单的缓存


练习 3:学生系统扩展(⭐⭐⭐)

任务:为学生管理系统添加成绩分析功能

要求: 1. 实现成绩统计类(GradeAnalyzer) 2. 支持计算平均分、中位数、标准差 3. 实现成绩分布统计(优秀/良好/中等/及格/不及格) 4. 生成成绩报告(文本格式) 5. 支持对比分析(班级间、学生间)

示例输出:

成绩报告 - Python一班
========================
班级平均分: 82.50
中位数: 85.00
标准差: 12.34
及格率: 80.0%
优秀率: 20.0%

成绩分布:
  优秀 (90-100): 2 人 (20%)
  良好 (80-89): 3 人 (30%)
  中等 (70-79): 2 人 (20%)
  及格 (60-69): 1 人 (10%)
  不及格 (<60): 2 人 (20%)

练习 4:ORM + API 集成(⭐⭐⭐)

任务:将 ORM 框架与 REST API 客户端集成

要求: 1. 实现 RemoteModel 类,支持远程数据同步 2. 支持本地缓存 + 远程同步 3. 实现离线模式(本地操作 + 上线同步) 4. 添加数据冲突解决策略

架构设计:

┌─────────────────────────────────────┐
│           Application              │
├─────────────────────────────────────┤
│         RemoteModel                │
│  ┌───────────┐  ┌───────────────┐  │
│  │   ORM     │  │   API Client  │  │
│  │  (Local)  │  │   (Remote)    │  │
│  └───────────┘  └───────────────┘  │
├─────────────────────────────────────┤
│         Sync Manager               │
│  ┌──────────────────────────────┐  │
│  │   Conflict Resolution        │  │
│  │   Cache Manager              │  │
│  │   Queue Manager              │  │
│  └──────────────────────────────┘  │
└─────────────────────────────────────┘

练习 5:设计模式应用(⭐⭐⭐⭐)

任务:使用设计模式重构学生管理系统

要求: 1. 使用观察者模式实现成绩通知系统 2. 使用策略模式实现不同的成绩计算方式 3. 使用工厂模式创建不同类型的用户 4. 使用单例模式实现全局配置管理

示例代码:

python
# 观察者模式
class GradeObserver(ABC):
    @abstractmethod
    def on_grade_added(self, student, subject, score):
        pass

class NotificationService(GradeObserver):
    def on_grade_added(self, student, subject, score):
        print(f"通知: {student.name} 的 {subject} 成绩已更新为 {score}")

# 策略模式
class GradingStrategy(ABC):
    @abstractmethod
    def calculate(self, scores: List[float]) -> float:
        pass

class AverageStrategy(GradingStrategy):
    def calculate(self, scores):
        return sum(scores) / len(scores)

class WeightedStrategy(GradingStrategy):
    def calculate(self, scores):
        # 加权平均
        pass

练习 6:性能优化(⭐⭐⭐⭐⭐)

任务:优化学生管理系统的性能

要求: 1. 实现数据分页加载 2. 添加查询缓存机制 3. 优化内存使用(使用 __slots__) 4. 实现懒加载(Lazy Loading) 5. 添加性能分析工具

优化点: - 使用 __slots__ 减少内存占用 - 实现查询结果缓存 - 使用生成器减少内存占用 - 添加性能计时装饰器


✅ 完成标准

基础要求

进阶要求

挑战要求


📚 扩展资源

阅读推荐

  1. 《Python 面向对象编程》 - 深入理解 OOP 概念
  2. 《流畅的 Python》 - 学习 Python 高级特性
  3. 《Python 设计模式》 - 掌握常见设计模式

在线资源

  1. Python 官方文档 - 类
  2. SQLAlchemy 文档 - 学习真正的 ORM 实现
  3. Requests 文档 - 学习 HTTP 客户端设计

实践项目

  1. 实现一个简单的博客系统(ORM + API)
  2. 开发一个学生管理 Web 应用
  3. 构建一个 RESTful API 服务

📅 完成日期:2026-07-01 📖 课程进度:Day 045/100 🎯 阶段:Phase 3 — 面向对象编程(完成)