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多维/嵌套字典数据无限遍历的实现
Nov 04 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Php多进程实现代码
May 07 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
python中的协程深入理解
Jun 10 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
django中间键重定向实例方法
Nov 10 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
python使用建议与技巧分享(二)
Aug 17 Python
python 学习GCN图卷积神经网络
May 11 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加密解密函数(动态加密)
2013/06/19 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
php实现的顺序线性表示例
2019/05/04 PHP
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python中__call__用法实例
2014/08/29 Python
python任务调度实例分析
2015/05/19 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python爬取指定微信公众号文章
2018/12/20 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
Python列表对象实现原理详解
2019/07/01 Python
PyTorch的torch.cat用法
2020/06/28 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
成品仓管员工作职责
2013/12/29 职场文书
防沙治沙典型材料
2014/05/07 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
政风行风评议工作总结
2014/10/21 职场文书
民事答辩状范本
2015/05/21 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
大国崛起观后感
2015/06/02 职场文书
我的长征观后感
2015/06/09 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python