6个月Python学习计划 Day 17 - 继承、多态与魔术方法
第三周 Day 4
🎯 今日目标
- 理解类的继承和方法重写
- 掌握多态思想及其实际应用
- 了解并使用常见的魔术方法(如 str、len 等)
🧬 类的继承(Inheritance)
Python 支持单继承与多继承,常用语法如下:
class 子类名(父类名):...
✅ 示例:定义一个继承自 Person 的 Student 类
class Person:def __init__(self, name):self.name = namedef introduce(self):print(f"我是 {self.name}")class Student(Person):def __init__(self, name, school):super().__init__(name)self.school = schooldef introduce(self):print(f"我是学生 {self.name},来自 {self.school}")
p = Person("李雷")
p.introduce()s = Student("韩梅梅", "清华大学")
s.introduce()
🌀 多态(Polymorphism)
多态强调:“一种接口,多种实现”
class Animal:def speak(self):print("动物在叫")class Dog(Animal):def speak(self):print("狗在汪汪叫")class Cat(Animal):def speak(self):print("猫在喵喵叫")def make_sound(animal):animal.speak()make_sound(Dog()) # 狗在汪汪叫
make_sound(Cat()) # 猫在喵喵叫
🎯 多态的优势在于:无需关心对象具体类型,只关心它是否有该方法。
✨ 魔术方法(Magic Methods)
魔术方法是 Python 中以双下划线开头和结尾的特殊方法,用于自定义类的行为。
方法名 | 用途 |
---|---|
init | 构造函数 |
str | 字符串显示 |
len | 返回长度 |
eq | 等于比较 |
✅ 示例:自定义打印格式
class Book:def __init__(self, title):self.title = titledef __str__(self):return f"《{self.title}》"
b = Book("流浪地球")
print(b) # 输出:《流浪地球》
🧪 今日练习任务
✅ 练习1:定义 Employee 父类,Manager 子类,重写介绍方法
class Employee:def __init__(self, name):self.name = namedef work(self):print(f"{self.name} 正在工作")class Manager(Employee):def work(self):print(f"{self.name} 正在管理团队")m = Manager("Alice")
m.work()
✅ 练习2:定义一个 Team 类,使用 len 和 str 魔术方法
class Team:def __init__(self, members):self.members = membersdef __len__(self):return len(self.members)def __str__(self):return f"团队成员有:{', '.join(self.members)}"t = Team(["张三", "李四", "王五"])
print(len(t)) # 3
print(str(t)) # 团队成员有:张三, 李四, 王五
✅ 练习3:模拟一个宠物乐园,定义父类 Pet,子类 Dog 和 Cat,并在统一函数中调用各自的 sound() 方法(体现多态)
class Pet:def sound(self):passclass Dog(Pet):def sound(self):print("汪汪!")class Cat(Pet):def sound(self):print("喵喵~")def pet_speak(pet):pet.sound()pet_speak(Dog())
pet_speak(Cat())
🧾 今日总结
核心概念 | 说明 |
---|---|
继承 | 子类可以继承父类的属性和方法 |
方法重写 | 子类可以覆盖父类中的方法 |
多态 | 同一个接口,传入不同对象呈现不同行为 |
魔术方法 | Python 内置的特殊函数,用于定制对象表现 |