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

第三周 Day 4

🎯 今日目标

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

🧬 类的继承(Inheritance)

Python 支持单继承与多继承,常用语法如下:

python 复制代码
class 子类名(父类名):
    ...

✅ 示例:定义一个继承自 Person 的 Student 类

python 复制代码
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}")
python 复制代码
p = Person("李雷")
p.introduce()

s = Student("韩梅梅", "清华大学")
s.introduce()

🌀 多态(Polymorphism)

多态强调:"一种接口,多种实现"

python 复制代码
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 等于比较

✅ 示例:自定义打印格式

python 复制代码
class Book:
    def __init__(self, title):
        self.title = title

    def __str__(self):
        return f"《{self.title}》"
python 复制代码
b = Book("流浪地球")
print(b)  # 输出:《流浪地球》

🧪 今日练习任务

✅ 练习1:定义 Employee 父类,Manager 子类,重写介绍方法

python 复制代码
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 魔术方法

python 复制代码
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() 方法(体现多态)

python 复制代码
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 内置的特殊函数,用于定制对象表现
相关推荐
郝学胜-神的一滴16 分钟前
Effective STL 第1条:慎重选择容器类型
开发语言·c++·程序人生·软件工程
可触的未来,发芽的智生24 分钟前
新奇特:负权重橡皮擦,让神经网络学会主动遗忘
人工智能·python·神经网络·算法·架构
The_Killer.26 分钟前
近世代数(抽象代数)详细笔记--群
学习·抽象代数·
阿明629 分钟前
list模拟实现(简单版)【C++】
开发语言·c++·学习·list
咖啡Beans39 分钟前
Python常用系统自带库之json解析
python
付玉祥40 分钟前
第 6 章 异常处理与文件操作
python
Yupureki43 分钟前
从零开始的C++学习生活 1:命名空间,缺省函数,函数重载,引用,内联函数
c语言·开发语言·c++·学习·visual studio
AI原吾1 小时前
ClaudeCode真经第二章:核心功能深度解析
python·ai编程·claudecode
鄃鳕1 小时前
高并发日志项目中,C++IO的使用
开发语言·c++
小墨宝1 小时前
web前端学习 langchain
前端·学习·langchain