6个月Python学习计划 Day 17 - 继承、多态与魔术方法

发布于:2025-06-09 ⋅ 阅读:(17) ⋅ 点赞:(0)

第三周 Day 4

🎯 今日目标

  • 理解类的继承和方法重写
  • 掌握多态思想及其实际应用
  • 了解并使用常见的魔术方法(如 strlen 等)

🧬 类的继承(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 类,使用 lenstr 魔术方法

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 内置的特殊函数,用于定制对象表现