第三周 Day 4
🎯 今日目标
- 理解类的继承和方法重写
- 掌握多态思想及其实际应用
- 了解并使用常见的魔术方法(如 str、len 等)
🧬 类的继承(Inheritance)
Python 支持单继承与多继承,常用语法如下:
class 子类名(父类名):
...
✅ 示例:定义一个继承自 Person 的 Student 类
class Person:
def __init__(self, name):
self.name = name
def introduce(self):
print(f"我是 {self.name}")
class Student(Person):
def __init__(self, name, school):
super().__init__(name)
self.school = school
def 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 = title
def __str__(self):
return f"《{self.title}》"
b = Book("流浪地球")
print(b) # 输出:《流浪地球》
🧪 今日练习任务
✅ 练习1:定义 Employee 父类,Manager 子类,重写介绍方法
class Employee:
def __init__(self, name):
self.name = name
def 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 = members
def __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):
pass
class 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 内置的特殊函数,用于定制对象表现 |