1、Python中的多态

(1)多态的定义

多态是一种使用对象的方式,子类重写父类方法,不同的子类对象调用相同的父类方法,可以产生不同的执行结果。

概括的说,多态指的是一类事物可以有多种形态呈现。

(2)多态的好处

  • 增加了程序额可扩展性,只要觉有相同的特征,就可以创建一个新的类,使用者无需更改原有类的代码,更容易编写出通用的代码,做出通用的编程。
  • 有了多态,增加了程序的调用灵活性,以不变应万变,不论对象千变万化,使用者都是同一种形式去调用。
  • 支持面向对象的“开闭”原则。
    • 对扩展开放(Open for extension):允许子类重写方法进行扩展。
    • 对修改封闭(Closed for modification):不重写,继承父类方法,直接使用。

(3)多态实现步骤

  1. Python中实现多态的两个前提条件:

    • 继承:多态一定是发生在子类和父类之间。
    • 重写:子类重写了父类的方法。
  2. 多态实现步骤
    • 定义父类,并提供公共方法。
    • 定义子类,并重写父类方法。
    • 传递子类对象给调用者,可以看到不同子类执行效果不同。

2、体验多态

  1. # 1. 定义父类,提供公共方法
  2. class Dog(object):
  3. # 父类提供统一的方法,哪怕是空方法
  4. def work(self):
  5. pass
  6. # 2. 定义子类,继承Dog类
  7. # 子类重写父类方法:
  8. # 定义2个类表示不同的警犬
  9. class ArmyDog(Dog):
  10. def work(self):
  11. print('追击敌人...')
  12. class DrugDog(Dog):
  13. def work(self):
  14. print('追查毒品...')
  15. # 定义人类
  16. class Person(object):
  17. # 传入不同的对象,执行不同的代码,即调用不同的work函数
  18. def work_with_dog(self, dog):
  19. dog.work()
  20. # 3. 创建对象,
  21. # (有多少个事物,就有要创建多少个对象)
  22. ad = ArmyDog()
  23. dd = DrugDog()
  24. # 4.传入不同的对象,调用不同的功能,
  25. obj = Person()
  26. obj.work_with_dog(ad)
  27. obj.work_with_dog(dd)

总结:

Java中多态性的表现: 多态性,可以理解为一个事物的多种形态。同样Python中也支持多态,但是是有限的的支持多态性,主要是因为Python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时Python不支持重载,所以在Python中 多态的使用不如Java中那么明显。

参考:https://blog.csdn.net/qq_26442553/article/details/81776699

『无为则无心』Python面向对象 — 56、Python多态的更多相关文章

  1. 『无为则无心』Python面向对象 — 51、私有成员变量(类中数据的封装)

    目录 1.私有成员变量介绍 (1)私有成员变量概念 (2)私有成员变量特点 (3)私有成员变量体验 2.属性私有化工作原理 3.定义成员变量的标识符规范 4.私有成员变量的获取和设置方式 1.私有成员 ...

  2. 『无为则无心』Python面向对象 — 53、对Python中封装的介绍

    目录 1.继承的概念 2.继承的好处 3.继承体验 4.单继承 5.多继承 1.继承的概念 在Python中,如果两个类存在父子级别的继承关系,子类中即便没有任何属性和方法,此时创建一个子类对象,那么 ...

  3. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  4. 『无为则无心』Python基础 — 6、Python的注释

    目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...

  5. 『无为则无心』Python基础 — 7、Python的变量

    目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...

  6. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  7. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  8. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  9. 『无为则无心』Python函数 — 29、Python变量和参数传递

    目录 1.Python的变量 (1)Python变量不能独立存在 (2)变量是内存中数据的引用 (3)注意点 2.了解变量的引用 3.Python的参数传递(重点) (1)示例 (2)结论 (3)总结 ...

随机推荐

  1. 《剑指offer》面试题14- I. 剪绳子

    问题描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]*k[1]* ...

  2. 网络编程-HTTP cookie

    目录 1.cookie的起源 2.cookie是什么? 3.创建cookie 3.1.响应首部 Set-Cookie 3.2.请求首部 Cookie 3.3.Document.cookie 4.HTT ...

  3. 【记录一个问题】golangci-lint.exe中,盘符大写就会执行出错

    golangci-lint.exe版本为1.31.0 执行:golangci-lint.exe run d:\source\github.com\ahfuzhang\go_xxx_server\src ...

  4. linux + opencv + cuvid中使用cv::cuda::GpuMat类的一些坑

    1.我最终成功实现了opencv中利用cuvid实现GPU视频解码:核心代码是: 1 cv::cuda::GpuMat d_frame; 2 cv::Ptr<cv::cudacodec::Vid ...

  5. ☕【Java深层系列】「并发编程系列」让我们一起探索一下CyclicBarrier的技术原理和源码分析

    CyclicBarrier和CountDownLatch CyclicBarrier和CountDownLatch 都位于java.util.concurrent这个包下,其工作原理的核心要点: Cy ...

  6. jstack定位java程序CPU使用高问题

    top top -Hp 进程id printf "0x%x\n" 2769746 jstack 进程id [root ~]$ printf "0x%x\n" 2 ...

  7. 学Go语言能找到实习吗,年前聊聊Go和Java

    前言 快过年了,来公司的人越来越少,估计明天都没什么人了,白泽也要收拾收拾回老家过年了.今天就随便写写零碎的事,所以行文当中难免思路跳跃,请大家一笑了之. 每次冷不丁收到公司给发的礼品袋,心头总是莫名 ...

  8. 学习JAVAWEB第七天

    ## Bootstrap: 1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JavaScript 的 ...

  9. 2022.02.04 Day1

    前言 为日后的算法面试做准备,自己也很喜欢算法这个东西,每天3~5道题. 刷题 1.leetcode 209 长度最下的子数组 题目 长度最下的子数组 大致的意思是从数组中找到长度最小的数组,并且数组 ...

  10. ApacheCN 数据科学译文集 2020.8

    协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 2.3.c 在线阅读 ApacheCN 面试求职交流群 724187166 Apach ...