第 9 课:🏯 侠客进阶(第二次重构)
🎯 学习目标
- 掌握 Class 类 的基础(class / __init__ / self / 方法)
- 了解简单继承的概念
- 正式理解 import 的工作原理
- 将代码从单文件重构为多文件结构
📚 家长预习指南(5 分钟)
本课核心要点
class Hero:— 定义一个类(模板/模具)def __init__(self, name):— 初始化方法,创建实例时自动调用self.name = name— 实例属性(这个角色自己的数据)hero = Hero("小龙")— 创建一个实例(用模具做出一个具体的角色)from hero import Hero— 从另一个文件引入 Hero 类
您的角色
🔴 观众 — 孩子主导,您提供必要的辅助
🔗 Scratch ↔ Python 对照
| Scratch 概念 | Python 代码 | 说明 |
|---|---|---|
| 角色(Sprite) | class Hero: |
定义一种角色的模板 |
| 克隆 | hero = Hero("小龙") |
用模板创建一个具体角色 |
| 角色的变量 | self.hp = 100 |
这个角色自己的数据 |
| 角色的自制积木 | def attack(self): |
这个角色会做的事 |
📖 活动模块
模块 A — 为什么要 Class(15 分钟)
目标
理解从字典到 Class 的升级
"字典管理侠客和妖怪越来越乱了——如果我们能定义一个'模具',每次用模具做出一个新侠客,是不是更方便?这就是 Class!"
模块 B — 创建 Hero 和 Monster 类(25 分钟)
目标
重构侠客和妖怪为 Class,拆分为多文件
将代码拆分为:
- hero.py — Hero 类定义
- monster.py — Monster 类定义
- config.py — 游戏参数和数据
- game.py — 主游戏逻辑
模块 C — import 的真相(10 分钟)
目标
理解 import 的工作原理
"还记得第 3 课的'魔法咒语' import random 吗?现在你知道真相了——import 就是从别的文件引入代码!from hero import Hero 就是从 hero.py 文件里拿出 Hero 类来用。"
🎮 运行游戏:多文件版本运行成功——代码更专业了!
🤖 AI 环节(独立使用 + 审视 AI 回答)
阶段
🔴 独立使用
任务 1
孩子独立向 AI 提问——"帮我检查这个 Class 定义有没有错误"
任务 2(审视 AI)
故意让 AI 生成一段有小问题的 Class 代码,引导孩子检查、发现问题并修正。这是培养"AI 不是万能的"批判性思维的好机会!
示例提示词
帮我写一个 Python 的 Monster 类,要有 name、hp、attack 属性。
然后引导孩子对比 AI 的代码和我们的 contracts/game-module-interfaces.md 规范,看看 AI 的版本有没有遗漏。
✅ 最小完成目标
- [ ] Hero 和 Monster 用 Class 定义
- [ ] 代码拆分为 hero.py + monster.py + config.py + game.py
- [ ] 游戏正常运行
⭐ 扩展挑战
- 尝试简单继承——BossMonster 继承自 Monster,有特殊技能
- 给 Hero 添加 to_dict() 和 from_dict() 方法(用于存档)
🐛 常见错误提示
| 错误 | 原因 | 解决 |
|---|---|---|
ModuleNotFoundError |
import 的文件不在同一目录 | 确保所有 .py 文件在同一个文件夹 |
self 忘了写 |
Class 方法第一个参数必须是 self | def attack(self): |
__init__ 拼写错 |
前后各两个下划线 | def __init__(self): |