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 pickle模块用法实例
Apr 14 Python
浅谈python迭代器
Nov 08 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
python实现Decorator模式实例代码
Feb 09 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
Tensorflow卷积神经网络实例
May 24 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
python实现各种插值法(数值分析)
Jul 30 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
python学习笔记之多进程
Aug 06 Python
OpenCV-Python实现轮廓拟合
Jun 08 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
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
js获取url传值的方法
2015/12/18 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
django使用html模板减少代码代码解析
2017/12/12 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python 调用钉钉机器人的方法
2019/02/20 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
小学生操行评语
2014/04/22 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
导游词格式
2015/02/13 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
话题作文之自信作文
2019/11/15 职场文书