Python面向对象之多态原理与用法案例分析


Posted in Python onDecember 30, 2019

本文实例讲述了Python面向对象之多态原理与用法。分享给大家供大家参考,具体如下:

目标

多态

面向对象三大特性

封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
定义类的准则
继承 实现代码的重用,相同的代码不需要重复的编写
设计类的技巧
子类针对自己特有的需求,编写特定的代码
多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果

多态 可以 增加代码的灵活度
以 继承 和 重写父类方法 为前提
是调用方法的技巧,不会影响到类的内部设计
Python面向对象之多态原理与用法案例分析

多态案例演练

需求

1.在 Dog 类中封装方法 game
普通狗只是简单的玩耍
2.定义 XiaoTianDog 继承自 Dog,并且重写 game 方法
哮天犬需要在天上玩耍
3.定义 Person 类,并且封装一个 和狗玩 的方法
在方法内部,直接让 狗对象 调用 game 方法
Python面向对象之多态原理与用法案例分析
案例小结

Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗
game 方法是在 Dog 父类中定义的
在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果
多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!

class Dog(object):

  def __init__(self, name):
    self.name = name

  def game(self):
    print("%s 蹦蹦跳跳的玩耍..." % self.name)


class XiaoTianDog(Dog):

  def game(self):
    print("%s 飞到天上去玩耍..." % self.name)


class Person(object):

  def __init__(self, name):
    self.name = name

  def game_with_dog(self, dog):

    print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))

    # 让狗玩耍
    dog.game()


# 1. 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")

# 2. 创建一个小明对象
xiaoming = Person("小明")

# 3. 让小明调用和狗玩的方法
xiaoming.game_with_dog(wangcai)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python如何生成各种随机分布图
Aug 27 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python中比较两个列表的实例方法
Jul 04 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 #Python
python面向对象之类属性和类方法案例分析
Dec 30 #Python
基于Python执行dos命令并获取输出的结果
Dec 30 #Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 #Python
python实现修改固定模式的字符串内容操作示例
Dec 30 #Python
python基于celery实现异步任务周期任务定时任务
Dec 30 #Python
Django框架之中间件MiddleWare的实现
Dec 30 #Python
You might like
php方法调用模式与函数调用模式简例
2011/09/20 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
PHP中Array相关函数简介
2016/07/03 PHP
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
深入理解vue Render函数
2017/07/19 Javascript
React组件refs的使用详解
2018/02/09 Javascript
koa-router源码学习小结
2018/09/07 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
编码实现字符串转整型的函数
2012/06/02 面试题
部队领导证婚词
2014/01/12 职场文书
七年级英语教学反思
2014/01/15 职场文书
致全体运动员广播稿
2014/02/01 职场文书
大学生村官考核材料
2014/05/23 职场文书
大学生作弊检讨书
2014/09/11 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书