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的垃圾回收机制深入分析
Jul 16 Python
python简单程序读取串口信息的方法
Mar 13 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
基于matplotlib xticks用法详解
Apr 16 Python
python中24小时制转换为12小时制的方法
Jun 18 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上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
解决python运行效率不高的问题
2020/07/20 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
写给爸爸的道歉信
2014/01/15 职场文书
农村婚礼主持词
2014/03/13 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
小学生操行评语大全
2014/04/22 职场文书
预备党员半年考察意见
2015/06/01 职场文书
公司财务管理制度
2015/08/04 职场文书
四则混合运算教学反思
2016/02/23 职场文书