7多态与多态性

多态

多态指的是一类事物有多种形态,比如

动物有多种形态:人,狗,猪

import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物@abc.abstractmethoddef talk(self):passclass People(Animal): #动物的形态之一:人def talk(self):print('say hello')class Dog(Animal): #动物的形态之二:狗def talk(self):print('say wangwang')class Pig(Animal): #动物的形态之三:猪def talk(self):print('say aoao')

所以多态是建立在继承的

多态性

一 什么是多态动态绑定(在继承的背景下使用时,有时也称为多态性)

多态性是指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性

静态多态性:如任何类型都可以用运算符+进行运算

动态多态性:如下

peo=People()
dog=Dog()
pig=Pig()#peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk()#更进一步,我们可以定义一个统一的接口来使用
def func(obj):obj.talk()
 

二 为什么要用多态性(多态性的好处)

 

其实大家从上面多态性的例子可以看出,我们并没有增加什么新的知识,也就是说python本身就是支持多态性的,这么做的好处是什么呢?

 

1.增加了程序的灵活性

 

  以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

 

2.增加了程序额可扩展性

 

 通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用  

 

转载于:https://www.cnblogs.com/sunny666/p/9685454.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Comet:基于 HTTP 长连接的“服务器推”技术

http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ “服务器推”技术的应用 请访问 Ajax 技术资源中心,这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。 传统模式的 We…

lol最克制诺手的英雄_LOL:哪些英雄之间非常克制,不管怎么打,遇到就输了?...

大家好,我是你们的老朋友小黑君。在英雄联盟里,英雄们总有克制或者被克制的英雄,就比如“剑魔克制阿卡丽”,尤其是接下来我们要说的这几对,在对局中遇到基本上就输了!冰霜女巫克制妖姬冰霜女巫的出场率一直…

聊聊内卷之下,直博和读完硕士再读博该怎么选择?

大家好,我是写代码的篮球球痴,转发一篇考研读博的文章,希望对大家求学生涯有所帮助。大家好,我是千与千寻,在上一篇推送之中,我们讨论了,五年之内博士是否会出现内卷,阅读量相当的高…

Android 位置服务——BaiduLocation的使用

Android 位置服务——BaiduLocation的使用 原文:Android 位置服务——BaiduLocation的使用版权声明:本文为博主原创文章,欢迎转载,转载请在文章显眼处说明文章出处并给出连接。 https://blog.csdn.net/To_be_Designer/article/details/486854…

推挽输出和开漏输出的区别

https://zhuanlan.zhihu.com/p/41942876

asp.net通过登录后修改个人信息_微信号终于可以修改了!快来改一个

上周,微信在安卓端开启了“修改微信号”功能的灰度测试,这也预示着这项新功能很快就能和我们见面了。果不其然,就在刚才微信正式上线了修改微信号的功能,大家期盼多年的功能终于上线了!!!安卓用…

python进程池pool_python多任务--进程池Pool

进程池Pool在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果…

数据集 结构化数据

数据集 一个数据的集和,每一行是一条数据记录,每一列是一个字段。 我们把表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息,就像在通讯录数据库中某个人全部的信息。字段是比记录更小的单位,字段集合组成…

STM32 ADC 单次模式、连续模式、扫描模式(转载)

ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能。这样ADC的这个通道,转换一次后,就停止转换。 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能。这样ADC的这个通道&…

LeetCode:验证回文串【125】

LeetCode:验证回文串【125】 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a …

一些好玩的创客玩件

桌面天气预报站:https://mc.dfrobot.com.cn/thread-311127-1-1.html

云数据中心网络遇到的问题_云数据中心面临安全问题,华为SDN解决方案有一个安全大脑...

CNET科技资讯网 9月23日 北京消息(文/周雅):当越来越多的企业开始采用云服务,安全问题往往成为待考虑的问题。在传统IT环境中,企业默认的逻辑架构是可信的,数据在自己手里,系统部署在自己的数据中心,有自己…

会唱歌的路

文 | 贰沐编辑 | 贰沐 子鱼会唱歌的路?!是什么意思?是说路会自己唱歌吗?开车行驶在普通的道路上,我们能够听到“嗡嗡”的各种杂乱无章的声音,而在有些特殊的路上,我们可以听到路面在发出有节奏的…

linux查看wifi信号命令_使用Nmcli命令从Linux终端连接WiFi

i使用Nmcli命令从Linux终端连接WiFi在linux系统中有几种用于管理无线网络接口的命令行工具。 其中的一些可用于简单查看无线网络接口状态(无论是启动还是关闭 ,或者是否连接到任何网络),如iw , iwlist , ip , ifconfig…

Modbus crc16校验

CRC-16 / MODBUS : 1)CRC寄存器初始值为 FFFF;即16位全为1; 2)CRC-16 / MODBUS的多项式A001H (1010 0000 0000 0001B) ‘H’表示16进制数,‘B’表示二进制数 计算步骤为: (1).预置 16 位寄存…

我的前同事,阿里大牛的技术感悟

以下内容转自前同事现阿里技术大牛-王怀利——现在想想,从业十年了,现在做的活,都不如我大学的时候做的项目,那么具有“技术含量”和挑战。一个是,我用最便宜的12M单片机开发的计时算法,帮老师赚了一笔钱。…

算法熟记-排序系列-堆排序

1. 简述 假设待排序数组为 int array[], 数组长度为n。 主要是利用堆的性质。对于升序排序,使用最大堆。 首先,建堆,使用递归后根序遍历得方法,通过交换元素,保证根元素比孩子元素大。 第1趟,堆顶…

oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗

多线程能提高Oracle的入库速度吗最近常常和同事们讨论“系统架构”,其中有不免提到如何使用“多线程”来改善系统性能。有些同事普遍有一种“认为”:他们认为“多线程”是改善系统性能的“灵丹妙药”,他们简单的认为,“多线程”导…

数据结构-- 线性表之链式存储

https://www.cnblogs.com/ZWOLF/p/10604252.html

那些年,我和发哥在恒大的日子

在广州上班那会,我们在恒大中心旁边的利通大厦上班,我和薛总每天一起上下班,那时候宿舍还有盼盼,有时候玩开心的时候,我就会跟他们说,等过了很多年后,我们要写一本说,书的名字就叫做…