临沂建设工程招聘信息网站,企业网站的建立和推广,做网站必备软件,重庆汉沙科技做网站怎么样文章目录 多态场景代码实现多态总结 进阶案例 多态
面向对象的三大特性#xff1a;
封装#xff1a;这是定义类的准则#xff0c;根据对象的特点#xff0c;将行为和属性抽象出来#xff0c;封装到一个类中。继承#xff1a;这是设计类的技巧。父类与子类#xff0c;主… 文章目录 多态场景代码实现多态总结 进阶案例 多态
面向对象的三大特性
封装这是定义类的准则根据对象的特点将行为和属性抽象出来封装到一个类中。继承这是设计类的技巧。父类与子类主要体现在代码的重用不需要大量的编写重复代码。多态不同的子类调用相同的父类方法产生不同的执行结果可以增加代码的外部灵活度。多态是以继承和重写父类方法为前提的它是一种调用方法的技巧不会影响到类的内部设计。
场景
提供三个类缉毒犬、军犬、人
缉毒犬 -- 追查毒品军犬 -- 攻击假人人 -- 让小狗干活
设计类来完成功能。
代码实现
class ArmyDog(object):def bite_enemy(self):print(追击敌人)class DrugDog(object):def track_drug(self):print(追查毒品)class Person(object):def work_with_army(self, dog):dog.bite_enemy()def work_with_drug(self, dog):dog.track_drug()ad ArmyDog()
dd DrugDog()p Person()
p.work_with_army(ad)
p.work_with_drug(dd)思考这段代码是否有问题
新增需求此时又多了一个犬种就又需要在Person类里新建一个方法让这个方法操作新的狗。
class XiaoTianDog(object):def eat_moon(self):print(哮天犬把月亮吃了)class Person(object):def work_with_xiaotian(self, dog): # 添加方法dog.eat_moon()Person类总是不断地添加新的功能每次都需要改动Person类的源码程序的扩展性太差了
最好是提供一个父类Dog具备work的功能其他小狗继承它这样只要是小狗类则行为被统一起来了我们人类完全可以保证只要是小狗的子类找它干活肯定不会有问题。
代码实现
class Dog(object):def work(self): # 父类提供统一的方法哪怕是空方法passclass ArmyDog(Dog): # 继承 Dogdef work(self): # 子类重写方法并且处理自己的行为print(追击敌人)class DrugDog(Dog):def work(self):print(追查毒品)class Person(object):def work_with_dog(self, dog):dog.work() # 使用小狗可以根据对象的不同而产生不同的运行效果保障了代码的稳定性# 子类对象可以当作父类来使用
dog Dog()
ad ArmyDog()
dd DrugDog()p Person()
p.work_with_dog(dog)
p.work_with_dog(ad) # 同一个方法只要是Dog的子类就可以传递提供了代码的灵活性
p.work_with_dog(dd) # 并且传递不同对象最终work_with_dog产生了不同的执行效果最终效果
Person类中只需要调用Dog对象的work()方法而不关心具体是什么狗。 work()方法是在Dog父类中定义的子类重写并处理不同方式的实现。 在程序执行时传入不同的Dog对象作为实参就会产生不同的执行效果。
多态总结
定义多态是一种使用对象的方式子类重写父类方法调用不同子类对象的相同父类方法可以产生不同的执行结果。好处调用灵活有了多态更容易编写出通用的代码做出通用的编程以适应需求的不断变化实现步骤 定义父类并提供公共方法。定义子类并重写父类方法。传递子类对象给调用者可以看到不同子类执行效果不同。
进阶案例 【Python】Python 实现猜单词游戏——挑战你的智力和运气 【python】Python tkinter库实现重量单位转换器的GUI程序 【python】使用Selenium获取(2023博客之星)的参赛文章 【python】使用Selenium和Chrome WebDriver来获取 【腾讯云 Cloud Studio 实战训练营】中的文章信息 使用腾讯云 Cloud studio 实现调度百度AI实现文字识别 【玩转Python系列【小白必看】Python多线程爬虫下载表情包网站的图片 【玩转Python系列】【小白必看】使用Python爬取双色球历史数据并可视化分析 【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中 【小白必看】Python图片合成示例之使用PIL库实现多张图片按行列合成 【小白必看】Python爬虫实战之批量下载女神图片并保存到本地 【小白必看】Python词云生成器详细解析及代码实现 【小白必看】Python爬取NBA球员数据示例 【小白必看】使用Python爬取喜马拉雅音频并保存的示例代码 【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现 【小白必看】Python爬虫数据处理与可视化 【小白必看】轻松获取王者荣耀英雄皮肤图片的Python爬虫程序 【小白必看】利用Python生成个性化名单Word文档 【小白必看】Python爬虫实战获取阴阳师网站图片并自动保存 小白必看系列之图书管理系统-登录和注册功能示例代码 小白实战100案例: 完整简单的双色球彩票中奖判断程序适合小白入门 使用 geopandas 和 shapely(.shp) 进行地理空间数据处理和可视化 使用selenium爬取猫眼电影榜单数据 图像增强算法Retinex原理与实现详解 爬虫入门指南(8): 编写天气数据爬虫程序实现可视化分析 爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】 爬虫入门指南(6):反爬虫与高级技巧IP代理、User-Agent伪装、Cookie绕过登录验证及验证码识别工具 爬虫入门指南(5): 分布式爬虫与并发控制 【提高爬取效率与请求合理性控制的实现方法】 爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法 爬虫入门指南(3)Python网络请求及常见反爬虫策略应对方法 爬虫入门指南(2)如何使用正则表达式进行数据提取和处理 爬虫入门指南(1)学习爬虫的基础知识和技巧 深度学习模型在图像识别中的应用CIFAR-10数据集实践与准确率分析 Python面向对象编程基础知识和示例代码 MySQL 数据库操作指南学习如何使用 Python 进行增删改查操作 Python文件操作指南编码、读取、写入和异常处理 使用Python和Selenium自动化爬取 #【端午特别征文】 探索技术极致未来因你出“粽” # 的投稿文章 Python多线程与多进程教程全面解析、代码案例与优化技巧 Selenium自动化工具集 - 完整指南和使用教程 Python网络爬虫基础进阶到实战教程 Python入门教程掌握for循环、while循环、字符串操作、文件读写与异常处理等基础知识 Pandas数据处理与分析教程从基础到实战 Python 中常用的数据类型及相关操作详解 【2023年最新】提高分类模型指标的六大方案详解 Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能 用4种回归方法绘制预测结果图表向量回归、随机森林回归、线性回归、K-最近邻回归