python之面向对象编程之多态与多态性

1.什么是多态

    多态指的是同一种事物的多种形态

    水-》冰、水蒸气、液态水

    动物-》人、狗、猪

2.为啥要用多态

    多态性:

    继承同一个类的多个子类中有相同的方法名

    那么子类产生的对象就可以不用考虑具体的类型而直接调用功能

 

    多态性的优点:

    1.增加了程序的灵活性

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

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

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

 

 

# Animal() #强调:父类是用来指定标准的,不能被实例化      
#父类有的子类必须要有,而且还要同名
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')
peo=People()
dog=Dog()
pig=Pig()

#peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk()

#更进一步,我们可以定义一个统一的接口来使用
def func(obj):
    obj.talk()

3.鸭子类型

    python推崇的是鸭子类型,只要你叫的声音像鸭子,并且你走路的样子也像鸭子,那你就是鸭子

  例:其实大家一直在享受着多态性带来的好处,比如Python的序列类型有多种形态:字符串,列表,元组,多态性体现如下 

 

 l=[1,2,3]
# s='helllo'
# t=(1,2,3)
#
# print(l.__len__())
# print(s.__len__())
# print(t.__len__())
#
# # def len(obj):
# #     return obj.__len__()
#
# print(len(l)) # l.__len__()
# print(len(s)) #s.__len__()
# print(len(t))

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

 

#二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用
class TxtFile:
    def read(self):
        pass

    def write(self):
        pass

class DiskFile:
    def read(self):
        pass
    def write(self):
        pass




 

转载于:https://www.cnblogs.com/Marcki/p/10111943.html

第二章 Python的类与对象 类与对象的操作我认为是所有面向对象中都非常值得学习的,故单独列出来也是希望可以侧重学习这个方向。 阅读详情

相关推荐

Python面向对象编程:类、继承与多态性

本章介绍了Python中的类、继承以及多态性的概念。通过定义Person类及其子类MIT_person,解释了如何在Python中使用__init__方法初始化实例,以及如何通过继承来扩展和定制类的行为。还探讨了重载运算符、方法覆盖以及如何利用继承层次来区分不同类型的对象。通过具体代码示例,展示了如何使用类方法和属性,以及如何通过继承实现代码复用和创建更为复杂的对象类型。

weixin_28746213的博客 757

(十)python之多态

多继承、多态

Sean_0819的博客 1万+

Python面向对象编程深入:类、继承及多态性

本章深入探讨了Python中的类、继承和多态性。通过Person类的实例化及其方法的调用,展示了类定义和对象属性的重要性。继承部分说明了如何通过父类属性的继承创建子类,并覆盖或添加新属性。特别是多态性的概念通过__lt__方法重载<运算符进行了阐释。同时,通过多重继承层级的构建,展示了如何区分不同类型的对象。

weixin_42355400的博客 688

Python面向对象特性——多态(基本概念、代码示例)

1)封装: 根据职责将属性和方法封装到一个抽象的类中 定义类的准则 2)继承: 继承实现代码的重复利用,相同的代码不需要重复的编写 设计类的技巧 子类针对自己的特有需求,编写特定的代码 3)多态:不同的子类对象调用相同的父类方法,产生不同的执行结果 多态可以增加代码对的灵活度 以继承和重写父类方法为前提 是调用方法的技巧,不会影响到类的内部设计

weixin_48728769的博客 1098

面向对象编程:Java与Python的类、对象和多态性

本文深入探讨了面向对象编程的核心概念,包括类、对象、继承、多态和封装。通过Java和Python的代码示例,展示了如何在两种语言中实现多态和封装,以及数据类型和变量在编程中的重要性。通过理解这些基本概念,开发人员能够创建出更加模块化、可维护和可扩展的代码。

weixin_42602726的博客 361

【LTspice】002 第一个仿真电路

目录 1. 光偶元件的工作原理 2. 过零检测电路的工作原理 3. 以PC817光耦搭建一个过零检测电路 1. 光偶元件的工作原理 光耦合器(optical coupler,英文缩写为OC)亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件。 PC817是一种把红外光发射器件和红外光接受器件以及信号处理电路等封装在同一管座内的器件。当输入电信号加到输入端发光器件LED上,LED发光,光接受器件接受光信号并转换成电信号,然后将电信号直接输出,或者将电信号放大处理成标准数字电平输

m0_59642765的博客 8024

Python面向对象之多态

一、什么是多态? 多态是面向对象的三大特征之一。 多态从字面上理解是多种形态,一个对象可以以不同的形态去呈现。 eg:狗(狼狗、藏獒、哈士奇、古牧 。。。) 多态比喻:如果一个东西,走路像鸭子,叫声像鸭子,那么它就是鸭子 举例说明: class A: def __init__(self, name): self._name = name @property def name(self): return self._name @name.se

familyyan的博客 1222

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程

本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。

weixin_29281941的博客 198

Python面向对象中的多态

文章目录0. 前言1. 多态1.1 什么是多态?1.2 程序语言中的多态1.3 多态的优点2. 鸭子模型2.1 什么是鸭子模型2.2 鸭子模型2.3 鸭子模型的应用 0. 前言 Python面向对象的三个基本特征是: 封装 继承 多态 通过研读多篇博文,发现python的多态别具一格,本文就来探讨一下python中的多态。 1. 多态 1.1 什么是多态? 多态就是同一类事物具有多种形态 那么什么叫同一类事物有多种形态呢?我们来举几个例子: 动物是一类事物,有哪些形态呢?人,猪,狗,猫等等 变形

老司机开代码的博客 505

XGBoost调参新姿势:Bayesian优化实战指南(附完整代码)

本文详细介绍了如何使用Bayesian优化方法高效调优XGBoost模型参数。通过解析Bayesian优化核心原理和XGBoost关键参数,提供完整的实战代码示例,帮助读者掌握这一智能调参技术,显著提升模型性能。文章特别适合机器学习工程师和数据科学家阅读。

weixin_42536058的博客 366

【开源数据集】电动车佩戴头盔检测数据集(TWHD)

佩戴头盔检测数据集VOC格式图像与标注数量各5448张

hzg19930513的博客 5170

Python面向对象编程——多态、多态性、鸭子类型

Python面向对象编程——多态、多态性、鸭子类型 一、多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Ani...

378

易灵思Ti60F100 FPGA的HyperRAM实战:从硬件连接到Native接口时序调试

本文详细介绍了易灵思Ti60F100 FPGA内置HyperRAM控制器的实战应用。文章从硬件设计要点(如400MHz+信号完整性、等长匹配)切入,重点解析了如何通过Interface Designer配置高效的Native接口,并分享了其时序详解与调试技巧,为开发者提供了一份从硬件连接到软件调试的深度指南。

weixin_29168153的博客 457

〖Python〗-- 面向对象编程的继承、多态与多态性、封装

【面向对象编程的继承、多态与多态性、封装】 一、继承顺序:   多继承情况下,有两种方式:深度优先和广度优先 1、py3/py2 新式类的继承:在查找属性时遵循:广度优先   继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另一个分支(若多条分支汇总一个头,除最后一条分支能走到头,其他的都走到次之位置停止,进行下一条分支的查找),直到查找到头为止。 可...

dmzzb82846的专栏 432

bartender 10.1破解版|bartender条码打印10.1

点击下载出处:BarTender10.1破解版 bartender10.1破解版是一款专业的条码打印软件,在行业内广受好评,通过使用bartender我们可以将标签设计这个复杂的过程变得更简便,在设计中快速调整,即刻打印,非常迅速,BarTender10.1破解版不仅支持的标签类型包括EPC Class 1 、Gen2 、ISO 18000-6b 、ISO 15693 、Tag-It 、I-CO...

weixin_44924147的博客 6万+

智能网联汽车电子电气架构(下)

从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。

m0_58838529的博客 1473

Python OOPs/OOP:Python 中的多态性与示例

多态性是面向对象编程的一个基本概念,是一个函数执行多个功能的能力。它可以以不同的方式实现,包括运算符重载、内置函数、类和继承。在运算符重载中,同一个运算符以不同的方式使用,例如加法和字符串连接。在英语中,同一个词可以根据我们的意图在不同的句子中使用。例如——手表这个词。它可以以以下两种方式使用-“我今天买了一块新手表。“我今晚真的很想看这部电影。显然,“手表”这个词首先被用作名词,然后用作动词。因此,这个词在两种情况下是相同的,但我们使用它的方式不同。

新华编程特战队 2247

超强干货之---Python-数据爬取(爬虫)

定义: 深度优先搜索是一种遍历或搜索树或图的算法,从起始节点开始,一直沿着一个分支走到底,再回溯到上一个节点继续搜索下一个分支,直到遍历完所有节点。特点递归:通常用递归实现,或者使用栈来模拟递归过程。内存占用低:在有大量分支的情况下,内存占用比广度优先搜索低。适合目标较深的情况:如果目标节点距离起始节点较深,DFS能更快找到目标。适用场景需要遍历所有节点的情况,如生成树、迷宫搜索。目标节点较深,且分支较多时。在大规模数据爬取时,选择合适的存储方式取决于数据的规模、结构和访问需求。

房东的猫的博客 5万+

python入门学习笔记之多态与多态性

本节重点 多态与多态性 鸭子类型 本节时长需控制在15分钟内 多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say he

Python_0011的博客 167

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

面向对象(四)多态以及多态性,

多态 多态从字面意思理解就是事物的多种形态 # 动物有多种形态 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 ...

yangsen99的博客 2746

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

多态与多态性

多态与多态性 鸭子类型 多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:...

陈浩然MC的博客 587

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python中对多态的理解

多态 多态是指一类事物有多种形态,比如动物类,可以有锚,狗,猪等.(一个抽象类有多个子类,因而多态的概念依赖于继承) 多态性 注意:多态与多态性是两种概念 多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数.在面向推向方法中一般是这样表述多态性,向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法),也就是说,每个对象可以用自己的方...

shuijinghua的博客 627

Python中的多态与鸭子类型:实现灵活的面向对象编程

多态性和鸭子类型是Python语言面向对象编程中两个重要的概念,它们提供了灵活的代码设计方式,使得代码更具可扩展性和可维护性。本文将详细讲解Python中的多态性、鸭子类型、接口与协议,以及它们在代码设计中的应用。通过大量代码示例和详细注释,本文带领读者深入理解如何利用多态性和鸭子类型设计出更加灵活且可扩展的面向对象程序,适合希望提升代码设计水平的Python开发者。

一个被知识诅咒的人 936
上一篇: python之继承中组合用法与菱形继承关系查找法
下一篇: python之面向对象编制之封装
bangwu8607
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值