python【多态特性】

news2024/11/14 10:31:11

多态:同样的行为(函数),传入不同的对象,得到不同的状态

特点:通过继承的方式体验抽象动作相同而具体实现细节不同细节的特性

如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态

条件:

  1. 继承:多态一定是发生在子类和父类之间;
  2. 重写:子类重写了父类的方法

实例理解:

class Animal:
    def speak(self):
        pass
class Dog(Animal):  #既然继承了父类Animal 的方法,为什么还要自己重新写一个方法呢
    def speak(self):   # 重写   
        print("汪 汪 汪") #重写

class cat(Animal):
    def speak(self): # 重写
        print("喵 喵 喵")

dog = Dog()
dog.speak()
cat = cat()
cat.speak()

关于子类对父类的重写,在前面讲过,子类继承了父类,那么子类就会拥有父类所有的类属性和类方法。一般情况下这些方法和属性是适合子类使用的,子类会在此基础上,做一些修改。关于在子类中对继承的父类属性和方法做的这些修改就叫重写

关于pass 的释义:pass 是一种空语句(null operation),解释器执行到它的时候,除了检查语法是否合法,什么也不做就直接跳过,它不会对所处的作用域产生任何影响,充当一个空间占位符。

抽象类(接口):包含抽象方法的类,称之为抽象类。抽象方法是指:没有具体实现的方法(pass)称之为抽象方法。

抽象类的作用:

多用于做顶层设计(设计标准),以便子类做具体实现。

也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法并配合多态使用,获得不同的工作状态。

实例解释:

class AC:
父类方法
    def cool_wind(self):
        """ 制冷"""
        pass
    def hot_wind(self):
        """ 制热"""
        pass
    def swing_l_r(self):
        """ 左右摆风"""
        pass

class Mide_AC(AC):
    def cool_wind(self):
        print("美的空调核心制冷科技")
    def hot_wind(self):
        print("美的空调电热丝加热")
        def swing_l_r(self):
            print("美的空调无风感左右摆风")
子类将继承的方法重写
class GREE_AC(AC):
    def cool_wind(self):
        print("格力空调变频省电制冷")

    def hot_wind(self):
        print("格力空调电热丝加热")

        def swing_l_r(self):
            print("格力空调无静音左右摆风")
配合多态,完成
抽象的父类设计(设计标准)
具体的子类实现(实现标准
def make_cool(ac:AC):
    ac.cool_wind()
midea_ac = Mide_AC()
gree_ac = GREE_AC()
make_cool(midea_ac)
make_cool(gree_ac)

为什么提出抽象类接口,是为了配合多态使用 ,通过以获得同一行为, 实现不同状态的效果。

在抽象类接口中,父类来确定要实现的事务(实现制冷、制热、左右摆风),具体的实现过程由子类实现(美的空调是核心制冷科技,格力空调是变频省电制冷)它们的具体实现技术手段是不一样的【这是体现了我们将的多态,同一函数,传入不同的对象返回了不同状态】,子类通过复写父类的方法来实现。

 

 总结: (论语二则)

 知者不惑,仁者不忧,勇者不惧

朝闻道,夕死可矣

 

 

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

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

相关文章

NetInside帮助IT提高应用性能分析能力(一)

前言 某大学信息中心老师反应,用户反馈科研创新服务器平台有访问慢的情况,需要通过流量分析系统来了解系统的运行情况,此报告专门针对系统的性能数据做了分析。 信息中心已部署NetInside流量分析系统,使用流量分析系统提供实时和…

进销存管理系统哪个比较好?

在如今互联网的刺激之下,企业之间的竞争逐渐加剧,很多企业之所以会逐渐被市场淘汰,主要原因都来源于管理上的混乱,而进销存软件的出现可以帮助企业解决管理难题。 选择一款合适的省心的进销存软件,有效提升企业的核心…

Redis中缓存穿透、击穿、雪崩以及解决方案

缓存穿透 理解: 缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去…

【正点原子FPGA连载】第八章使用Vitis开发Linux应用摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第八章使用Vitis…

日本知名汽车零部件公司巡礼系列之株式会社140

株式会社140 业务内容: ・特殊切削工具汽车零件加工用特殊工具的设计、制作・特殊零件海斯、超硬、陶瓷、cBNCD工具的设计与制作・制造用夹具、安装用具、检查用具、定位用具、消耗工具等一制造装饰零件相关的装置或专用机的构成零件等・模具零件制作…钳子、模具…

Spring Boot整合MyBatis(保姆级教程)

前言 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objec…

【正点原子FPGA连载】第九章Linux图形界面的搭建摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第九章Linux图形…

单片机之震动传感器、继电器、433M无线发射接收等模块介绍及应用

目录 一、震动传感器模块 二、继电器介绍 三、433M无线发射接收模块 1、 无线控制报警器代码 2、电动车简易防盗器代码实现 一、震动传感器模块 单片机供电VCC GND接单片机 产品不震动,输出高电平、模块上的AO口 产品震动,输出低电平&#xff0c…

Python使用库(一)

Python使用库 库 就是是别人已经写好了的代码, 可以让我们直接拿来用. 荀子曰: “君子性非异也,善假于物也” 一个编程语言能不能流行起来, 一方面取决于语法是否简单方便容易学习, 一方面取决于生态是否完备. 所谓的 “生态” 指的就是语言是否有足够丰富的库, 来…

day11-分类和static

1.案例驱动模式 1.1案例驱动模式概述 (理解) 通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题 1.2案例驱动模式的好处 (理解) 解决重复代码过多的冗余,提高代码的复用性解决业务逻辑聚集紧密导致的可读性差,提高代码的可…

【python Turtle源码】教你如何画一只迎福虎将~

前言 大家早好、午好、晚好吖 ❤ ~ 代码展示 导入模块 from turtle import * import time因代码体量有点多 这里就给大家部分展示了,有需要的可以文章下方名片获取哦~ (或者评论已点赞收藏,求代码,我私你呀) COLO…

用Python实现童年小游戏贪吃蛇

贪吃蛇游戏是有史以来最受欢迎的街机游戏之一。在这个游戏中,玩家的主要目标是在不撞墙或不撞墙的情况下抓住最大数量的水果。在学习 Python 或 Pygame 时,可以将创建蛇游戏视为一项挑战。这是每个新手程序员都应该接受的最好的初学者友好项目之一。学习…

Glove模型的原理与代码

文章目录一、背景二、原理部分1.共现矩阵2. F值的获取3. Glove公式的获取4. 损失函数的获取三、代码部分1.词表映射2. 词嵌入3. 训练函数4. 输出结果总结一、背景 GloVe模型即Global Vectors模型,该模型认为语料库中单词出现的统计(共现矩阵) 是学习词向量表示的无监…

将博客系统部署到云服务器上(允许外网访问)

努力经营当下,直至未来明朗! 文章目录访问链接测试部署简单回顾 部署普通小孩也要热爱生活! 访问链接测试 个人博客系统 登录名:小小周 密码:xiaozhou 部署 在Linux上搭建一个Java部署环境,然后开始进行博…

声明式事务的属性之传播行为

声明式事务的属性之传播行为 ①介绍 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 ②测试 Controller public class BookC…

望尘科技通过港交所聆讯:坚持深耕“体育游戏”的收获者

文|螳螂观察 作者|李永华 行将结束的2022年,体育大年,除了令人心跳加速的赛事,还有遍地的“黄金”。 各领域大大小小的厂商们使出浑身解数,掘金市场。 刚刚过去不久的世界杯,让这一过程到达了高潮。 广告代言、彩…

排序(完整版)

目录 一、基本概念 二、排序的分类 三、排序算法的好坏的衡量 四、五类内排序 插入排序 直接插入排序 演示: 关键代码: 完整代码 结果: 插入排序算法分析: 带哨兵的插入排序 举例: 关键代码 完整代码 折半…

365天深度学习训练营-第P4周:猴痘病识别

🍨 本文为🔗365天深度学习训练营 内部限免文章(版权归 K同学啊 所有)🍦 参考文章地址: 🔗第P4周:猴痘病识别 | 365天深度学习训练营🍖 作者:K同学啊 | 接辅导…

Java 发送邮件

使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。 您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。您可以从 Java 网站…

从业10多年,我总结了这几款程序员必备实用工具

优秀程序员之所以优秀的原因并不一定是他写代码的速度比别人快,而是他解决事情的效率比别人高、副业渠道比别人广,所以提供工作效率的方法并不需要我们样样精通,提高副业收入的办法也不需要我们挖空心思,有时候使用好的工具就能帮…