今天给大家介绍面向对象最后一个重要的特性——多态。如果想温习前两个重要特性(继承和封装),可以点开:《Python面向对象教程之基本概念》、《Python面向对象教程之单继承》、《Python面向对象教程之多继承》以及《Python面向对象教程之封装》。

多态从代码的角度理解的话,就是子类的方法覆盖了基类的同名方法,即重定义;从实际场景理解的话,就是同一种说法有着不同的用途。

为方便理解,假设这么一个场景:一个父亲有两个孩子,但这三个人都会挣钱,但挣的钱不一样多,那么该如何去实现这种功能呢?

首先看类的定义:

class Father(): # 基类的定义def earn_money(self): return 15000 # 挣15000class Son1(Father): # 第一个子类的定义def earn_money(self):return 7000 # 挣7000class Son2(Father): # 第二个子类的定义def earn_money(self):return 6000 # 挣6000

接着看结果:

# 首先分别实例化三个类
dashuai = Father()
xiaoming = Son1()
xiaohua = Son2()# 打印相应的结果
print(dashuai.earn_money()) # 返回15000
print(xiaoming.earn_money()) # 返回7000
print(xiaohua.earn_money()) # 返回6000

很显然,由于三个人都会挣钱,所以在代码中的体现是都有earn_money这个方法的。但是,三个类的对象调用的方法返回了三个不同的值,很显然子类的方法“重写”了基类的方法,多态这个特性也因此得以体现。

显而易见的是,多态使得代码更为灵活,因为子类可以覆盖基类的方法;当然,也使得代码容易拓展。

好了,今天的分享就到这了。如果有需要对Python其他知识点进行讲解的话,可以在后台留言给我~


本文转自微信公众号:superdiao的果壳

喜欢的朋友可以去关注(关注后有福利哦~),记得先给本文点赞或者点喜欢呐!

http://weixin.qq.com/r/szlobI7EPkZCKcoPb2w3 (二维码自动识别)

python多态_Python面向对象教程之多态相关推荐

  1. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  2. python多态_Python 简明教程 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封 ...

  3. python继承和多态_Python 简明教程 --- 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封装. ...

  4. java多态app_Java 入门教程 - Java 多态 - IT学院 - 中国软件协会智能应用服务分会...

    Java 多态 本小节我们来学习面向对象的最后一大特征--多态.多态是面向对象最重要的特性.我们将介绍多态的概念和特点,并带领大家实现一个多态的案例,你将了解到多态的实现条件.什么是向上转型以及什么是 ...

  5. Python之路-面向对象继承和多态类属性和实例属性类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-& ...

  6. python 对象_python面向对象

    OOP -面向对象 1.python的面向对象相关概念 2.类与对象 2.1 类和对象的创建 2.2 类属性与实例属性 2.3 类方法和实例方法 2.4 self 3.面向对象编程 封装 继承 构造i ...

  7. python 封装_Python 面向对象三大特性之封装

    封装 定义:隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 将变化隔离: 便于使用: 提高复用性: 提高安全性: [封装原则] 将不需要对外提供的内容都隐藏起来: 把属性都隐藏,提供公共 ...

  8. ppt python 爬虫_python基础教程 PPT-python为什么叫爬虫

    看过了Python基础教程,接下来应该怎么做 看完基础教程代表你已经入门了,接下来就需要你做一下项目,把书本上的知识转化为自己的,活学活用,之后再进行中高级的学习! Python基础教程的介绍 本书包 ...

  9. 存款利息python题_python入门教程NO.8 用python写个存款利息计算器 已

    本文涉及的python基础语法为def函数,return,函数的各参数示例,匿名函数等 函数初识 函数是一段 组织好的 可重复使用的 用来实现特定功能的 代码块. 函数能提高代码的模块性,和代码的重复 ...

最新文章

  1. Python学习笔记二:布尔表达式
  2. 扒一扒 JVM 的垃圾回收机制,拿大厂offer少不了它!
  3. wxWidgets:wxXmlDocument类用法
  4. 51nod1429 巧克力
  5. YARN部件以及执行流程
  6. C#中判断字符串相等的方法
  7. 固定数组实现一个队列
  8. 现场取证之流量分析总结
  9. 旅游网毕业设计java代码教程_基于JavaWeb技术的旅游网站的设计与实现--毕业论文.doc...
  10. 微信浏览器禁止下载的处理方法-跳转浏览器打开
  11. 企业微信怎么填写服务器,勤哲Excel服务器软件做企业微信管理系统
  12. web前端入坑第二篇:web前端到底怎么学?干货资料!
  13. [小白slam攻略]ROVIO安装运行及保存轨迹用evo评估
  14. java basic认证_HTTP Basic auth认证
  15. 论文笔记--3D human pose estimation in video with temporal convolutions and semi-supervised training
  16. 中国移动:4G流量不清零,可分享
  17. VS2008向工具箱中添加控件解决 未能实例化 设计时授权
  18. 全民开发者时代到来!华为云开发者日深圳站成功举办
  19. hautoj1262: 魔法宝石
  20. 音频传输之Jitter Buffer设计与实现

热门文章

  1. 自定义AlertDialog 问自己的单选item
  2. 关于iReport-5.6.0之前版本 “无法启动”或者“一开就关闭”的 某些原因
  3. ArcEngine的鼠标事件中按键判断~
  4. linux查看内存、CPU占用资源最多的进程
  5. java-第九章-循环结构进阶-三个班级每班4位同学成绩大于85的算平均分.
  6. Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
  7. javascript处理事件的一些兼容写法
  8. 移动web开发都会遇到的坑(会持续更新)
  9. 电子地图开发中栅格模型与矢量模型的区别
  10. (转)十步精通新语言