1. 魔法比喻:类就像“魔法生物蓝图”
在魔法世界,神奇生物有共同特征(比如护树罗锅会开锁、夜骐能飞行)。
- 类(Class):是生物模板(比如“所有家养小精灵”的通用规则)。
- 对象(Object):是具体实例(比如“多比”这个真实存在的小精灵)。
2. 基础咒语:定义一个“魔法画像”类
画像会说话,但每幅画像有不同的名字和台词!
class 魔法画像:
# __init__ 是初始化咒语(创造对象时自动执行)
def __init__(self, 名字, 台词):
self.名字 = 名字 # 属性:画像的名字
self.台词 = 台词 # 属性:画像的固定台词
# 方法:画像会说话
def 说话(self):
print(f"{self.名字}的画像说:{self.台词}")
# 创建两个画像对象(用类当模板)
画像1 = 魔法画像("胖夫人", "口令是什么?")
画像2 = 魔法画像("梅林", "知识就是力量!")
画像1.说话() # 输出:胖夫人的画像说:口令是什么?
画像2.说话() # 输出:梅林的画像说:知识就是力量!
3. 重点解析:类与对象的关键概念
- 属性(Properties):对象的特征(比如名字、颜色、年龄)。
- 方法(Methods):对象能做的动作(比如说话、飞行、攻击)。
- self 的秘密:代表对象自己(像镜子里的倒影),用来访问属性和方法。
4. 魔法升级:继承——让生物拥有“家族能力”
不同魔法生物可能有共同祖先!比如所有火龙都会喷火,但有的会飞更高。
class 火龙:
def __init__(self, 名字, 火焰温度):
self.名字 = 名字
self.火焰温度 = 火焰温度
def 喷火(self):
print(f"{self.名字}喷出了{self.火焰温度}度的火焰!🔥")
class 挪威脊背龙(火龙): # 继承自火龙类
def 高空飞行(self): # 子类独有的方法
print(f"{self.名字}冲上云霄,甩掉了匈牙利树蜂!")
# 创建子类对象
诺伯 = 挪威脊背龙("诺伯", 1500)
诺伯.喷火() # 调用父类方法
诺伯.高空飞行() # 调用子类方法
5. 常见错误:新手的魔法事故
忘记写 self:
def 喷火(): # 错误!缺少self参数 print("喷火!")
混淆类与对象:
火龙.喷火() # 错误!要先用类创建对象才能调用方法
6. 实战练习:制作会飞的扫帚
任务:定义一个飞天扫帚
类,包含属性(名字、速度),方法(加速、减速)。
class 飞天扫帚:
def __init__(self, 名字):
self.名字 = 名字
self.速度 = 0 # 初始速度为0
def 加速(self):
self.速度 += 10
print(f"{self.名字}加速!当前速度:{self.速度}km/h 🚀")
def 减速(self):
if self.速度 > 0:
self.速度 -= 5
print(f"{self.名字}减速!当前速度:{self.速度}km/h")
# 测试代码
火弩箭 = 飞天扫帚("火弩箭")
火弩箭.加速() # 速度+10
火弩箭.加速() # 速度+10
火弩箭.减速() # 速度-5
7. 高级魔法:用类模拟魔法对决
class 巫师:
def __init__(self, 名字, 生命值):
self.名字 = 名字
self.生命值 = 生命值
def 攻击(self, 目标, 咒语):
print(f"{self.名字}对{目标.名字}使用了『{咒语}』!")
目标.生命值 -= 10 # 每次攻击减少10点生命
哈利 = 巫师("哈利·波特", 100)
伏地魔 = 巫师("伏地魔", 150)
哈利.攻击(伏地魔, "除你武器") # 哈利对伏地魔使用了『除你武器』!
print(f"伏地魔剩余生命:{伏地魔.生命值}") # 输出:140
📜 课堂总结:类与对象守则
- 类是蓝图,对象是实体:就像“所有魔杖”是类,你的冬青木魔杖是对象。
- 属性是特征,方法是能力:猫头鹰的属性有羽毛颜色,方法有送信。
- 继承让魔法更高效:不必重复定义火龙和凤凰的共同特征。
- self 是灵魂:让对象知道自己是谁,能做什么。
🔮 课后作业:设计一个时间转换器
类,包含属性(剩余时间)、方法(倒转时间、恢复时间)。试试让赫敏用这个类拯救小天狼星吧!