news 2026/5/5 23:11:38

【Python零基础到进阶】类的继承、重写和多继承

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python零基础到进阶】类的继承、重写和多继承

包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!

1.类的基本概念(烤红薯案例)

1classKaohongshu:2"""烤红薯的类"""34def__init__(self):5self.level=0# 烘烤程度6self.condition="生的"# 状态78defcook(self,time):9self.level+=time10# 根据烘烤时间更新状态11ifself.level>8:12self.condition="烤成灰了"13elifself.level>5:14self.condition="烤好了"15elifself.level>3:16self.condition="半生不熟"17else:18self.condition="生的"1920definfo(self):21print(f"烤了{self.level}分钟,状态:{self.condition}")2223# 使用示例24digua=Kaohongshu()25digua.cook(2)26digua.info()# 输出:烤了2分钟,状态:生的
关键点:
3.方法可以修改对象的属性(如cook方法修改level)

二、类的继承(父子关系)

1. 继承的概念
继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。子类可以直接使用父类的属性和方法,也可以扩展或修改父类的行为。
继承关系:
示例代码
1classPerson:2"""人类基类"""3def__init__(self,name,age,gender):4self.name=name# 实例属性:姓名5self.age=age# 实例属性:年龄6self.gender=gender# 实例属性:性别78defhello(self):9"""问候方法"""10print(f"你好,我的名字是{self.name},我的年龄是{self.age}岁,我的性别是{self.gender}。")1112defbirthday(self):13"""年龄增长方法"""14self.age+=115print(f"生日快乐!我现在{self.age}岁了。")1617# 实例化测试18laifu=Person("来福",20,"男")19laifu.hello()# 输出:你好,我的名字是来福...20laifu.birthday()# 年龄+1并打印提示
继承实践
1classSon(Person):# 继承Person类的所有功能2pass# 空实现,仅继承34# 子类实例化5beibei=Son("蓓蓓",18,"女")6beibei.hello()# 直接调用继承的方法7beibei.birthday()# 调用继承的方法
2.🌱 所有类的"老祖宗":object类
写法如下所示:
1# 写法1:显式继承object(推荐)2classDog(object):3pass45# 写法2:隐式继承object(Python3会自动补上)6classCat:7pass89# 验证继承关系10print(Dog.__bases__)# 输出:(<class 'object'>,)11print(Cat.__bases__)# 输出:(<class 'object'>,)

object类的作用
它给所有类预装了基础能力,比如:
3.继承的基本用法
1classAnimal:# 父类2defeat(self):3print("动物会吃东西")45classDog(Animal):# 子类 // 在括号内写入父类的名称,就是继承6defbark(self):7print("狗会汪汪叫")89# 使用示例10xiaobai=Dog()11xiaobai.eat()# 继承父类方法12xiaobai.bark()# 调用自己的方法
语法总结:
3. 方法重写(儿子改进爸爸的方法)
1classCat(Animal):2defeat(self):# 重写父类方法3print("猫吃鱼时会发出呼噜声")45# 使用示例6miaomiao=Cat()7miaomiao.eat()# 输出:猫吃鱼时会发出呼噜声
语法总结:

三、多继承

1classPainter:2defdraw(self):3print("会画画🎨")45classMusician:6defplay(self):7print("会弹琴🎹")89# 多继承10classStudent(Painter,Musician):11defstudy(self):12print("还会学习📚")1314# 使用15xiaoli=Student()16xiaoli.draw()# 来自Painter17xiaoli.play()# 来自Musician18xiaoli.study()# 自己的方法
1. 基础用法
1classSinger:2defsing(self):3print("🎵 正在唱歌...")45classDancer:6defdance(self):7print("💃 正在跳舞...")89classSuperStar(Singer,Dancer):# 继承多个父类10pass1112# 使用示例13star=SuperStar()14star.sing()# 继承歌手能力15star.dance()# 继承舞者能力
2. 同名方法处理规则
1classTeacher:2defskill(self):3print("📚 会讲课")45classChef:6defskill(self):7print("👨🍳 会做饭")89classSuperMan(Teacher,Chef):10pass1112# 使用示例13clark=SuperMan()14clark.skill()# 输出:📚 会讲课(优先继承写在前面的父类)
⚠️ 继承顺序规则(MRO)
当多个父类有同名方法时:
1classPainter:2defdraw(self):3print("会画画🎨")45classMusician:6defplay(self):7print("会弹琴🎹")89# 多继承10classStudent(Painter,Musician):11defstudy(self):12print("还会学习📚")1314# 使用15xiaoli=Student()16xiaoli.draw()# 来自Painter17xiaoli.play()# 来自Musician18xiaoli.study()# 自己的方法19# 查看继承顺序20print(Student.__mro__)

3.多继承综合案例(奶茶师傅的配方之争)

📜 代码案例解析
1classYidiandian:# 一点点师傅2def__init__(self):3self.kongfu="一点点奶茶配方"# 秘方属性45defmake_tea(self):6print(f"👨🍳 按照《{self.kongfu}》制作奶茶")78defchouyan(self):9print("🚬 偷偷抽了根华子")1011classXicha:# 喜茶师傅12def__init__(self):13self.kongfu="喜茶奶茶配方"1415defmake_tea(self):16print(f"👩🍳 按照《{self.kongfu}》制作奶茶")1718defdrink(self):19print("🍺 下班喝了杯啤酒")2021classCainiao(Yidiandian,Xicha):# 继承两位师傅22def__init__(self):23self.kongfu="自研奶茶配方"# 覆盖父类配方24# pass # 注释掉时使用父类配方2526# 创建学徒对象27tudi=Cainiao()
1️⃣ 属性继承规则

2️⃣ 方法调用顺序
1tudi.make_tea()2# 输出:👨🍳 按照《自研奶茶配方》制作奶茶
执行逻辑:
所以,运行结果如下:

3️⃣ 非冲突方法继承
1tudi.chouyan()# 🚬 来自一点点师傅2tudi.drink()# 🍺 来自喜茶师傅

🧙MRO魔法解析
1print(Cainiao.__mro__)2# 输出:(<class '__main__.Cainiao'>, <class '__main__.Yidiandian'>, <class '__main__.Xicha'>, <class 'object'>)

四、课上练习

题目一:多继承基础
1classA:2defmethod_A(self):3print("这是A类方法 → 来自父类A的核心能力")45classB:6defmethod_B(self):7print("这是B类方法 → 来自父类B的专属技能")89classC(A,B):# 👑 多重继承10defmethod_C(self):11print("这是C类方法 → 子类自主研发的新功能")1213# 使用示例14super_c=C()15super_c.method_A()# 🅰 继承自A16super_c.method_B()# 🅱 继承自B17super_c.method_C()# © 自有方法1819""" 20 输出结果: 21 这是A类方法 → 来自父类A的核心能力 22 这是B类方法 → 来自父类B的专属技能 23 这是C类方法 → 子类自主研发的新功能 24 """

题目二:多继承应用
1classPainters:2defdraw(self):3print("🎨 绘制《星空》完成 → 来自画家基因")45classMusicians:6defplay(self):7print("🎹 演奏《月光曲》完成 → 继承音乐天赋")89classStudents(Painters,Musicians):10definfo(self):11print("\n🌟 学霸技能展示:")12self.draw()# 调用画家父类方法13self.play()# 调用音乐家父类方法14print("📚 额外技能:量子物理研究")# 自有功能1516# 使用示例17xiaoming=Students()18xiaoming.info()1920""" 21 输出结果: 22 🌟 学霸技能展示: 23 🎨 绘制《星空》完成 → 来自画家基因 24 🎹 演奏《月光曲》完成 → 继承音乐天赋 25 📚 额外技能:量子物理研究 26 """

题目三:三重继承实战
1classAnimal:2defrun(self):3print("🏃♂️ 陆地疾驰 → 继承动物奔跑能力")45classBirds:6deffly(self):7print("🕊️ 高空翱翔 → 获得鸟类飞行特性")89classFishes:10defswim(self):11print("🏊♂️ 深水潜游 → 融合鱼类游泳技能")1213classDuck(Animal,Birds,Fishes):14definfo(self):15print("\n🦆 鸭王能力展示:")16self.run()# 动物类方法17self.fly()# 鸟类方法18self.swim()# 鱼类方法19print("🥇 特殊技能:铁锅炖自己")# 鸭子专属2021# 使用示例22super_duck=Duck()23super_duck.info()2425""" 26 输出结果: 27 🦆 鸭王能力展示: 28 🏃♂️ 陆地疾驰 → 继承动物奔跑能力 29 🕊️ 高空翱翔 → 获得鸟类飞行特性 30 🏊♂️ 深水潜游 → 融合鱼类游泳技能 31 🥇 特殊技能:铁锅炖自己 32 """


🟢总结

🟡文末福利

🔴包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!

可以扫描下方二维码领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 23:15:48

IDEA回滚已推送的代码到指定commit

第一步&#xff1a;本地分支回滚到指定commit 找到要回滚的commit&#xff0c;右键菜单选择“Reset Current Branch to Here…”。先回滚本地分支代码&#xff0c;确认回滚没问题后&#xff0c;下一步强制推送本地分支代码。 第二步&#xff1a;强制推送已回滚的分支 git p…

作者头像 李华
网站建设 2026/5/1 11:43:02

PHP vs Python:Web开发与多面手的终极对决

语言类型与设计理念PHP是一种专为Web开发设计的脚本语言&#xff0c;早期主要嵌入HTML中实现动态网页功能&#xff0c;语法设计偏向于快速解决Web问题。Python是一种通用编程语言&#xff0c;强调代码可读性和简洁性&#xff0c;适用于Web开发、数据分析、人工智能等多个领域。…

作者头像 李华
网站建设 2026/5/4 22:10:29

基于非对称纳什谈判的多微网电能共享运行优化策略Matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍推进可再生能源高效利用,实现电力系统…

作者头像 李华
网站建设 2026/4/25 18:48:49

贵州省考报名今天开始!详细报名流程秒懂

贵州的考公人集合啦&#xff01;2026贵州省考报名通道已经正式开启&#x1f51b; 从照片调整到选岗缴费&#xff0c;我把全流程都给你们整理好啦&#x1f447;⏰ 关键时间节点 ✅ 报名时间&#xff1a;1月19日9:00—1月23日 ✅ 初审时间&#xff1a;1月19日—1月25日 ✅ 缴费时…

作者头像 李华
网站建设 2026/5/4 15:06:36

配电不透明,管理就无从谈起,这正是很多企业大楼的现状

安科瑞刘鸿鹏172 一 ⑥⑨⑦② 一 5322在企业大楼的配电系统中&#xff0c;用电规模不断扩大、负载类型日趋复杂&#xff0c;传统断路器“只分合、不感知”的局限性正逐渐显现。运维人员往往只能在故障发生后被动处理&#xff0c;缺乏对回路运行状态的持续掌握&#xff0c;这不仅…

作者头像 李华
网站建设 2026/4/30 4:47:10

C++(C++17/20)最佳工厂写法和SLAM应用综合示例

现代 C&#xff08;C17/20&#xff09;下的最佳工厂写法一、现代 C 工厂设计的基本原则 在 C17/20 下&#xff0c;好的工厂写法通常满足&#xff1a;RAII 明确所有权 返回 std::unique_ptr<T> 为默认无 switch / 无 RTTI支持扩展而不修改&#xff08;OCP&#xff09;构造…

作者头像 李华