当前位置: 首页 > news >正文

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

第三周 Day 4

🎯 今日目标

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

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

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

相关文章:

  • 程序问题实录
  • Python BeautifulSoup解析HTML获取图片URL并下载到本地
  • 【电路】阻抗匹配
  • 云原生架构赋能企业数字化转型:从理念到落地的系统性探索
  • springboot3.5整合Spring Security6.5默认密码没有打印输出控制台排查过程
  • BeanFactory 和 FactoryBean 有何区别与联系?
  • 在vs2022中的program.cs中已经没有app.useEndpoints
  • 分词算法总结:不同分词算法的优点和缺点
  • K8S认证|CKS题库+答案| 8. 沙箱运行容器 gVisor
  • 从入门到实战:AI学习路线全解析——避坑指南
  • AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划
  • shell脚本 --案例实操
  • 【优选算法】模拟 问题算法
  • 【CSS-7】深入解析CSS伪类:从基础到高级应用
  • 73常用控件_QFormLayout的使用
  • SQL 注入开放与修复
  • 针对异构数据的联邦学习
  • Linux 基础IO(下)
  • D25异常处理
  • 【学习笔记】深入理解Java虚拟机学习笔记——第5章 调优案例分析与实战
  • 可信赖的坪山网站建设/查权重网站
  • 深圳网站建设论坛/营销对企业的重要性
  • 安阳网站建设优化/热狗seo顾问
  • 计算机网站建设/seo在线优化工具
  • 学校html网站模板/如何网络推广新产品
  • 椒江网站建设578做网站/seow