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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音怎么下载视频

抖音作为一款短视频社交平台,凭借其独特的短视频形式和丰富的内容,吸引了大量用户。有些用户在欣赏完抖音视频后,想要将其保存下来,以便日后观看。如何在抖音下载视频呢?本文将为您详细介绍抖音视频下载的技巧和方法。…

使用MinIO搭建自己的分布式文件存储

目录 引言: 一.什么是 MinIO ? 二.MinIO 的安装与部署: 三.Spring Cloud 集成 MinIO: 1.前提准备: (1)安装依赖: (2)配置MinIO连接: &…

uni-app 如何实现选择和上传非图像、视频文件?

在 uni-app 中实现选择和上传非图像、视频文件,可根据不同端(App、H5、小程序)的特点,采用以下方法: 一、通用思路(多端适配优先推荐) 借助 uni.chooseFile 选择文件,再用 uni.upl…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介

前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …

UDP与TCP通信协议技术解析

文章目录 协议基础原理TCP:可靠的面向连接通信UDP:高效的无连接通信 性能特征分析TCP性能表现UDP性能表现 应用场景分析TCP适用场景UDP适用场景 技术实现考量错误处理策略网络资源利用 选择决策框架可靠性需求评估性能要求分析 混合方案设计协议组合策略…

mysql 页的理解和实际分析

目录 页(Page)是 Innodb 存储引擎用于管理数据的最小磁盘单位B树的一般高度记录在页中的存储 innodb ibd文件innodb 页类型分析ibd文件查看数据表的行格式查看ibd文件 分析 ibd的第4个页:B-tree Node类型先分析File Header(38字节-描述页信息…

【优选算法】C++滑动窗口

1、长度最小的子数组 思路&#xff1a; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 滑动窗口// 1.left0,right0// 2.进窗口( nums[right])// 3.判断// 出窗口// (4.更新结果)// 总和大于等于 target 的长度最小的 子数组…

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…

408考研逐题详解:2009年第33题

2009年第33题 在 OSI 参考模型中&#xff0c;自下而上第一个提供端到端服务的层次是&#xff08; &#xff09; A. 数据链路层 \qquad B. 传输层 \qquad C. 会话层 \qquad D.应用层 解析 本题主要考查 OSI 参考模型各层的核心功能、端到端服务的定义。 OSI 参考模型&am…

CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found

Nginx1.24编译时&#xff0c;报LuaJIT2.x错误&#xff0c; configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…

自制喜悦字贴

一、想法 据说&#xff0c;把“喜悦”两个字挂在家里显眼的地方&#xff0c;时常看到&#xff0c;就能心情愉悦。刚好最近在学习前端flex布局&#xff0c;用代码实现&#xff0c;导出图片&#xff0c;打印出来&#xff0c;帖在家里&#xff0c;非常nice。现在分享给大家。 二…

每日八股文6.3

每日八股-6.3 Mysql1.COUNT 作用于主键列和非主键列时&#xff0c;结果会有不同吗&#xff1f;2.MySQL 中的内连接&#xff08;INNER JOIN&#xff09;和外连接&#xff08;OUTER JOIN&#xff09;有什么主要的区别&#xff1f;3.能详细描述一下 MySQL 执行一条查询 SQL 语句的…

量化面试绿皮书:6. 烧绳子计时

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 6. 烧绳子计时 你有两根绳子&#xff0c;每根绳子燃烧需要1小时。但是任何一根绳子在不同点都有不同的密度&#xff0c;所以不能保证绳子内不…

2-深度学习挖短线股1

选短线个股的流程 &#xff08;1&#xff09;数据预处理&#xff0c;根据短线个股筛选标准&#xff0c;给个股日线数据打标。 &#xff08;2&#xff09;模型训练&#xff0c;针对每只股票&#xff0c;训练得到分类模型。 &#xff08;3&#xff09;结果预测&#xff0c;根据训…

【数据分析】探索婴儿年龄变化对微生物群落(呼吸道病毒和细菌病原体)结构的影响

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍1. 混合效应逻辑回归模型2. 随机森林模型3. Maaslin2 分析加载R包数据下载导入数据数据预处理混合效应逻辑回归模型分析微生物群落结构随年龄的变化随机森林模型预测病原体定植Maas…

实战:子组件获取父组件订单信息

最佳实践建议 优先使用 props&#xff1a;适合父子组件直接通信&#xff0c;数据流向清晰复杂场景用 eventBus&#xff1a;跨组件通信推荐使用 mitt 库避免过度使用 $parent&#xff1a;会导致组件耦合度高&#xff0c;难以维护provide/inject 适用于跨层级&#xff1a;如主题…

Spring Security深度解析:构建企业级安全框架

Spring Security深度解析:构建企业级安全框架 本文将深入探讨Spring Security安全框架的核心原理、架构设计和实际应用,帮助开发者全面掌握企业级应用安全防护技术。 目录 Spring Security概述核心架构与原理认证机制详解授权机制详解核心组件分析配置与集成高级特性应用安全…

计算矩阵A和B的乘积

根据矩阵乘法规则&#xff0c;编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写&#xff0c;函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…

《Brief Bioinform》: 鼠脑单细胞与Stereo-seq数据整合算法评估

一、写在前面 基因捕获效率、分辨率一直是空间转录组细胞类型识别的拦路虎&#xff0c;许多算法能够整合单细胞(single-cell, sc)或单细胞核(single-nuclear, sn)数据与空间转录组数据&#xff0c;从而帮助空转数据的细胞类型注释。此前我们介绍过近年新出炉的Stereo-seq平台&…

camera功能真的那么难用吗

背景 Android开发工作过程中&#xff0c;经常需要用到camera相关能力&#xff0c;比如&#xff1a;人脸识别&#xff0c;ai识别&#xff0c;拍照预览&#xff0c;摄像头录制等等需求。都需要使用到camera&#xff0c;且需要拿到camera的预览数据。但是每次开发这块代码都比较繁…