摘要:

多态从字面意思上看就是多种形态,在我们python的面向对象里就是不同的对象在接收相同方法或者函数时会产生不同的行为,也就是说,每个对象可以用自己的方式去响应共同的函数,不同的方式实现不同的结果。

多态从字面意思上看就是多种形态,比如人有黑种人,黄种人,白种人等等,这就是一类事物的不同形态,在我们python的面向对象里就是不同的对象在接收相同方法或者函数时会产生不同的行为,也就是说,每个对象可以用自己的方式去响应共同的函数,不同的方式实现不同的结果。

多态

1、多态

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

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

import abc

class Animal(metaclass=abc.ABCMeta): #同一类事物:动物

@abc.abstractmethod

def talk(self):

pass

class 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')

文件有多种形态:文本文件,可执行文件

import abc

class File(metaclass=abc.ABCMeta): #同一类事物:文件

@abc.abstractmethod

def click(self):

pass

class Text(File): #文件的形态之一:文本文件

def click(self):

print('open file')

class ExeFile(File): #文件的形态之二:可执行文件

def click(self):

print('execute file')

2、多态性

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

多态性是指在不考虑实例类型的情况下使用实例

在面向对象方法中一般是这样表述多态性:

向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。

也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作,虽然二者消息一样,但是执行的效果不同

peo=People()

dog=Dog()

pig=Pig()

#peo、dog、pig都是动物,只要是动物肯定有talk方法

#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用

peo.talk()

dog.talk()

pig.talk()

#更进一步,我们可以定义一个统一的接口来使用

def func(obj):

obj.talk()

鸭子类型

逗比时刻:

Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象

也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。

例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法

例2:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系

#二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用

class TxtFile:

def read(self):

pass

def write(self):

pass

class DiskFile:

def read(self):

pass

def write(self):

pass

python对象特性教学_Python三个面向对象特性多态性的实用解释,实践,解读,丨,三大,特征,之...相关推荐

  1. python对象底层原理_Python字符串对象实现原理详解

    在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,比如:str,list, set, dic ...

  2. python中文编程教学_Python入门教程完整版400集(懂中文就能学会)快来带走

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  3. python重点知识 钻石_python——子类对象如何访问父类的同名方法

    1. 为什么只说方法不说属性 关于"子类对象如何访问父类的同名属性"是没有意义的.因为父类的属性子类都有,子类还有父类没有的属性,在初始化时,给子类对象具体化所有的给定属性,完全没 ...

  4. python判断对象是否实例化_Python判断对象是否相等及eq函数的讲解

    摘要 什么是python对象的标识 python对象相等的判断 自定义python对象相等的条件 python对象的标识 python对象标识就是python对象自身的要素,python对象主要有3要 ...

  5. python deepcopy报错_python 字典对象赋值之deepcopy遭遇的问题及解决过程(lxml惹的祸)...

    今天在写一段代码的时候,需要对字典进行传值操作. 一般情况下字典a = 字典b,意味着是传引用,b发送改变的情况下a也会发生改变. 我的字典如下 a={'testcase': {'attributes ...

  6. python创建文件对象的函数_Python 文件对象常用内建方法

    学习python教程文件操作时,除了 文件对象读取内容 file.read(size):size为读字节的长度,默认为-1. file.readline(size):逐行读取,如果定义了size参数, ...

  7. python面对对象的编程语言_python面对对象编程

    一.创建类class ClassName: '类文档字符串,用于解释说明 'class_body #类体 下面来创建一个银行客户的例子class Customer: '编写银行的顾客类' name=' ...

  8. python中对象的定义_python中对象的定义和使用

    python中对象的定义和使用 发布时间:2020-06-22 11:57:16 来源:亿速云 阅读:98 作者:Leah 今天就跟大家聊聊有关python中对象的定义和使用,可能很多人都不太了解,为 ...

  9. python保存类对象到文件_python存储对象到文件

    1.pickle包 (1).将内存中的对象转换成为文本流: import pickle # define class class Bird(object): have_feather = True w ...

最新文章

  1. [Usaco2009 Feb]Revamping Trails 道路升级
  2. 《深入Java虚拟机》笔记
  3. .NET Core 3.0之深入源码理解Startup的注册及运行
  4. 【好文链接】什么是光流
  5. 关于DNF的多媒体包NPK文件的那些事儿(1)
  6. H3C交换机堆叠配置
  7. 1stopt拟合步骤_1stopt快速公式拟合
  8. Tongweb 7 集中管理工具
  9. Ubuntu下shift键失灵解决办法
  10. OSChina 周六乱弹 ——致敬默默守护国运的男人们
  11. 改进的判定条件覆盖讲解和真值表书写
  12. 使用aspose.word.for.java解析word文档图片并替换
  13. 7_使用OGR模块操作矢量数据
  14. 第4代计算机的应用,在第四代计算机期间内计算机的应用逐步进入到().docx
  15. 无压低温烧结银:SiC芯片封装的关键材料
  16. 车辆清洗系统-全自动洗车机-龙门清洗系统-自助洗车系统-自动洗车机解决方案
  17. 机器学习之朴素贝叶斯 1
  18. 荔枝nano开启RNDIS驱动,无需补丁。
  19. 常用图像数据集:标注、检索
  20. windows 以管理员身份打开命令行窗口

热门文章

  1. Windows 下搭建 Ruby 开发环境
  2. android studio使用ndk,jni随记
  3. 网络数据校验随笔(1)
  4. 通过UserAgent判断智能设备(Android,IOS)
  5. 【算法14】找出数组中两个只出现一次的数字
  6. 第二章 UML与设计模式
  7. android 模仿微信布局,【Android初学者】框架布局:仿微信页面制作
  8. inset() php,inset.php · L@Y/studentscoremanagementsystem - Gitee.com
  9. python return函数_理解Python函数中的return关键字
  10. Python+tkinter模拟京东旋转图片式验证码输入