一、什么是多态?

一句话概括:父类类型接收子类对象。
多态是面向对象的三大特征之一。
多态从字面上理解是多种形态,一个对象可以以不同的形态去呈现。
eg:狗(狼狗、藏獒、哈士奇、古牧 。。。)
多态比喻:如果一个东西,走路像鸭子,叫声像鸭子,那么它就是鸭子

二、python中的多态

没有多态,处处皆多态
多态的实际应用场景:类的实例对象是可以作为函数的参数
python的函数参数,不作任何类型的限定。所以说python中没有多态,处处皆多态。
其它的语言当中多态的情况。其它如java,函数参数必须申明类型。

class People:def eat(self):print("人类喜欢吃肉和青菜...")class Chinese(People):def eat(self):print("中国人喜欢吃米饭,面条,火锅,饺子,馒头...")class Duck:def eat(self):print("鸭子喜欢吃剩饭...")class Rabbit:def eat(self):print("兔子喜欢吃萝卜...")# python中多态的用法
# obj这个参数可以是任意类的对象,但是这个类的对象必须有eat方法,否则就会报错
# 不用考虑传入的obj对象类型是什么,只要有eat方法就可以。
def use_eat(obj):obj.eat()use_eat(People())
use_eat(Chinese())
use_eat(Duck())
use_eat(Rabbit())# 其它的语言当中多态的情况。其它如java,函数参数必须申明类型。
# 将参数申明为父类类型,那么父类的所有子类对象都是符合条件的。
def use_eat2(obj: People):obj.eat()use_eat(People())
use_eat(Chinese())

举例说明:

class A:def __init__(self, name):self._name = name@propertydef name(self):return self._name@name.setterdef name(self, name):self._name = nameclass B:def __init__(self, name):self._name = name@propertydef name(self):return self._name@name.setterdef name(self, name):self._name = namedef say_hello(obj):print('你好 %s' % obj.name)a = A("小红")
b = B("小明")# 对于say_hello()这个函数来说,只要对象中含有name属性,它就可以作为参数传递
#   这个函数并不会考虑对象的类型,只要有name属性即可
say_hello(a) # 你好 小红
say_hello(b) # 你好 小明# 在say_hello_2中我们做了一个类型检查,也就是只有obj是A类型的对象时,才可以正常使用,
#   其他类型的对象都无法使用该函数,这个函数就违反了多态
# 违反了多态的函数,只适用于一种类型的对象,无法处理其他类型对象,这样导致函数的适应性非常的差
# 注意,向isinstance()这种函数,在开发中一般是不会使用的!
def say_hello_2(obj):# 做类型检查if isinstance(obj , A):print('你好 %s'%obj.name)   say_hello_2(b) # 什么也不打印

二、总结面向对象的三大特征
封装
就是把属性藏到对象内部,
- 确保对象中的数据安全
继承
对一个类进行扩展,进行增强
- 保证了对象的可扩展性
多态
让方法定义更加灵活
- 保证了程序的灵活性

Python面向对象之多态相关推荐

  1. Python面向对象编程---多态

    Python面向对象编程-多态 定义: 是一种使用对象的方式,子类重写父类的方法(非必须),调用不同子类对象的相同父类方法,可以产生不同的执行结果,简言之就是:传入不同的对象,产生不同的结果. 好处: ...

  2. python面向对象:多态与多态性

    多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物@abc.abs ...

  3. python 面向对象_多态、内置方法、反射

    内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...

  4. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  5. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  6. 3. Python 面向对象编程

    文章目录 Python 面向对象编程 1.3.1 面向对象编程理论 1.3.1.1 对象 1.3.1.2 类 1.3.1.3 面向对象编程的特点 1.3.2 Python 面向对象编程 1.3.2.1 ...

  7. python继承和多态心得_python学习第十五天 -面向对象之继承和多态

    大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...

  8. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  9. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

最新文章

  1. 九九乘法表-九九乘法表数据输出
  2. 28. LAST() 函数
  3. 余额宝放10万元,一年收益大概有多少钱?
  4. Linux Shell脚本专栏_一键查看服务器的利用率_04
  5. c语言函数实现strstr,C语言实现strstr函数模拟
  6. android画板笔锋实现
  7. 非常新能源铝电池项目的产业化展开的分析报告v1.1
  8. 电脑开机是哪个键 电脑常用快捷键盘点
  9. python实现ddos防护_python实现的防DDoS脚本
  10. 找出符合要求的字符串子串
  11. vs项目配置类型解析
  12. 华为Mate7-打开开发者选项
  13. TK 设置tkinter窗口的置顶属性,保持最上层
  14. 2022-2028全球与中国固态继电器市场现状及未来发展趋势
  15. x小学计算机知识竞赛方案,竞赛方案精编小学竞赛方案
  16. vlookup匹配的文字显示0_「Excel高效办公」vlookup函数的几种常用使用场景
  17. Python 结合Ansible 把管理资产信息自动插入到CMDB中
  18. VSCODE的底部状态栏为什么是紫色
  19. Chaos Mesh 实战分享丨通过混沌工程验证 GreatDB 分布式部署模式的稳定性
  20. 死亡爱丽丝服务器维护,《死亡爱丽丝》上线玩家太多 游戏无限期停服维护

热门文章

  1. WEB网页设计期末作业个人主页——基于HTML+CSS制作个人简介网站
  2. 人工智能python零基础入门教程_人工智能零基础入门视频教程
  3. hdu 3234 并查集
  4. 如何批量修改文件名部分字段或文字?
  5. 2023北京老博会(中国国际老年产业博览会)展位预订迎高峰
  6. 知乎热议:如何成为中国科学院院士?
  7. Risk Management and Financial Institution Chapter 16 —— Basel II.5,Basel III, and Other Post-Crisis
  8. 2021绝地求生dm雷达
  9. springboot搭建文件预览解决方案,支持目前主流格式office文件,txt文件,png,jpg等图片以及压缩文件的在线预览功能
  10. 如何显示密件抄送人员地址_如何在Outlook中使用规则自动密件抄送电子邮件