Python教程:多态性

Python之多态 # 1、多态:同一种事务的多种形态 # 不关注对象的类型,关注对象的具有的行为 # 不同的子类对象,调用相同的方法,会产生不同的结果 ''' “需求”:警务人员和警犬一起工作,警犬分2种:追击敌人和追查毒品,警务人员携带不同的警犬,执行不同的工作。 “实现步骤”:1. 定义父类,并提供公共方法。 2. 定义子类,并重写父类方法。 3. 传递子类对象给调用者,可以看到不同子类执行效果不同。 ''' # 1、定义父类,并提供公共方法 class Dog(object): d 阅读详情

多态性是OOPs的一个特点,它标志着一个名字可以有不同的功能。一个实体可以采取不同的形式。

本教程将展示多态性在Python中是如何实现的。

1.Python中的多态性

理解这个问题的最好方法是使用len() 函数。这个函数对不同的对象有不同的解释。

对于一个列表,它将返回存在的全部元素,对于一个字符串,将返回存在的全部字符。

代码:

lst = ['delft', 'stack']
s = 'delftstack'
print(len(lst), len(s))

输出:

2 10

另一个说明Python中多态性的常见功能是+ 操作符。这个运算符可以在Python中执行两个数字之间的加法。

然而,当与字符串一起使用时,它就像一个连接运算符,将两个字符串结合起来。

代码:

a = 5 + 6
s = 'delft' + 'stack'
print(a, s)

输出:

11 delftstack

2.在Python中使用类方法实现多态性

在Python中所有的东西都是一个对象,都属于某个类。方法与类的对象相关联。

这就是为什么+ 操作符和len() 函数对不同的对象执行不同的功能。+ 操作符调用一个为不同对象定义的不同的魔法函数。

我们可以创建我们的类并实现这一点。两个类可以有相同名称的函数,但有不同的目的和不同的定义。

代码:

class A:
    def fun(self):
        print("Class A")
class B:
    def fun(self):
        print("Class B")
ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

输出:

Class A
Class B

在Python中使用方法重写实现多态性

多态性在Python中也与类的继承有关。继承是指一个类访问另一个类的特征。

一个类和它的子类可能包含同名的函数,我们可以在Python中使用函数覆盖。使用方法覆盖,我们可以在子类中实现已经定义的方法。

我们可以根据子类的情况重新定义函数。

代码:

class A:
    def fun(self):
        print("Class A")
class B(A):
    def fun(self):
        print("Class B")
ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

输出:

Class A
Class B

在上面的代码例子中,类B 继承自类A ,但是fun() 的方法在类B 中被覆盖,并且根据类来定义。

我们也可以从类A 中访问被重载的函数fun() 。

代码:

class A:
    def fun(self):
        print("Class A")
class B(A):
    def fun(self):
        A.fun(self)
        print("Class B")
ob2 = B()
ob2.fun()

输出:

Class A
Class B

3.在Python中使用函数和操作符重载实现多态性

函数重载是一个有趣的功能,它实现了多态性。这个功能在Python中是没有的,在Python中会调用最近定义的函数。

在Python中,有可能对运算符进行重载。我们知道,不同的运算符可以根据对象的类型执行不同的功能,通过+ 运算符可以清楚地看到。

发生这种情况是因为每当使用一个运算符时,它都会在内部调用一个神奇的函数。例如,+ 运算符在内部调用了__add__ 方法。

这个神奇的函数在其名称前后都有双下划线。魔法函数不是用来直接调用的,但我们可以为不同的类定义魔法函数来修改不同运算符的行为。

代码:

class A:
    def __init__(self, a):
        self.a = a
    def __add__(self, o):
        return self.a + o.a + 2
ob1 = A(5) #Python小白学习交流群:711312441
ob2 = A(4)
print(ob1+ob2)

输出:

11

在上面的例子中,我们通过修改类A 的魔法函数来重载+ 操作符,并在结果中加入2 。

【Python】多态 在计算机科学的宏大图景中,面向对象编程(Object-Oriented Programming, OOP)无疑是构建复杂、可维护、可扩展软件系统的核心范式之一。它将现实世界的实体抽象为计算机程序中的“对象”,通过封装、继承、多态这三大支柱,赋予代码以生命力,使其能够更自然地模拟真实世界的交互与演化。而在这三大支柱中,多态(Polymorphism),犹如一颗璀璨的明珠,闪耀着其独特的魅力与力量。多态,字面意义是“多种形态”或“多种形式”。在编程领域,它指的是允许不同类的对象对同一个消息(即同一个方法调用)作 阅读详情

相关推荐

Python语言 的多态性(Polymorphism)

从字面上来理解,多态性(Polymorphism)一词来源于希腊语,意为“多种形态”。在编程中,多态性指的是不同对象可以通过相同的接口进行操作,具体行为取决于对象的实际类型。这意味着我们可以用一种统一的方式处理不同类型的对象,增强了代码的可读性和灵活性。多态性是Python语言中一个非常强大的特性,它极大地提高了代码的灵活性和可扩展性。通过继承、方法重写和鸭子类型,Python开发者可以以非常优雅的方式处理对象,从而简化代码并提升设计的灵活性。

2401_90031854的博客 788

(十)python之多态

多继承、多态

Sean_0819的博客 1万+

Python面对对象:多态和多态性(详解)

这篇文章主要介绍了Python面向对象编程之多态,结合实例形式详细分析了Python面向对象编程中多态的概念、使用方法及相关注意事项,能力有限,仅供参考

金鞍少年的博客 1382

【Python】面向对象 - 多态 ( 多态概念 | 多态用法 | 抽象类概念 | 代码示例 )

一、面向对象 - 多态 1、多态概念 2、多态用法 3、代码示例 - 多态 二、抽象类 1、抽象类概念 2、代码示例 - 抽象类

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

Python中的多态性:基于ABC模块的接口设计与实现

多态性是面向对象编程的核心特性之一,它允许不同类型的对象通过统一的接口进行交互。在Python中,`abc`模块为实现接口设计和抽象基类提供了强大的工具,使得程序更具灵活性和可扩展性。本篇文章深入探讨如何使用`abc`模块创建抽象基类,定义接口,并实现灵活的类层次结构。通过丰富的代码实例和详细的中文注释,读者将掌握从基础到高级的接口设计技巧,了解如何在实际开发中有效利用多态性和抽象基类来构建可维护的代码。

一个被知识诅咒的人 1386

Python 多态(Polymorphism)详解

多态(Polymorphism)是面向对象编程(OOP)中的一个重要概念,指的是相同的接口,不同的实现。换句话说,多态允许不同的类以相同的方式调用方法,而不需要知道具体的类是哪一个。方法重写(Method Overriding):子类重写父类的方法,使得相同的方法名称在不同类中表现不同的行为。方法多态(Duck Typing):Python 语言的动态特性,使得对象只要实现了相应的方法,就可以被当作相应的类型使用。多态形式说明示例方法重写(Override)子类重写父类的方法,实现不同的行为。

m0_62599305的博客 1159

Python教程:多态与多态性

一、多态 Python中多态是指一类事物有多种形态。比如动物有多种形态,人,狗,猫,等等。文件有多种形态:文本文件,可执行文件。 二、多态性 1.什么是多态性? 多态性是指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性 静态多态性:如任何类型都可以用运算符+进行运算 动态多态性:如下 import abc class Animals(metaclass=abc.ABCMeta): @abc.abstractmethod def talk(self):

Python热爱者的博客 688

贝叶斯校准在计算机模型不确定性分析中的实践指南

本文深入探讨了贝叶斯校准在计算机模型不确定性分析中的核心原理与实践方法。通过将模型从“黑箱”转变为“透明箱”,该方法系统量化了参数不确定性、模型结构缺陷及观测误差。文章重点阐释了如何利用高斯过程作为代理模型和模型不足函数,构建完整的贝叶斯校准框架,并提供了从数据准备、模型训练到MCMC推断及不确定性分析的实战指南,最终实现更可靠的预测与决策支持。

weixin_29088655的博客 292

Python教程:类的多态和多态性

Python教程:类的多态和多态性

Python热爱者的博客 262

ADS1256单端vs差分接法详解:在STM32上实现8通道电压采集与4通道差分测量的实战对比

本文深入解析ADS1256在STM32平台上的单端8通道与差分4通道电压采集方案,详细对比两种接法的硬件设计、软件配置及性能差异。通过CubeMX配置SPI接口和优化数据读取时序,实现高精度测量,适用于工业监测等高要求场景。

weixin_29165465的博客 245

宽带阻抗匹配的工程实现-第一步,端口驻波仿真

其实阻抗匹配我工作以来经常说,也经常做,但是基本上都是直接在印制板上进行调试。现在想先用仿真软件直接设计出来,才发现很多东西嘴上说容易,想做出来太难了。所以准备写一些文章,记录一下碰到的问题。

pp_0604的博客 2374

Python基础教程:多态和多态性以及鸭子类型的详细用法

一.多态 多态指的是一类事物有多种形态,一个抽象类有多个子类,因而多态的概念依赖于继承 1.1 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): # 动物的形态之一:人 def talk(self): print('say

Python热爱者的博客 968

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

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

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

新华编程特战队 2246

Light Tools 8.4 在 win10系统上的安装方法(64位)

** 总的来说安装LT需要以下步骤(折腾了三天终于装好): 安装LT软件–禁用签名–加载含数字签名的第三方inf–添加注册表/安装驱动/添加密钥–成功破解 一、下载对应的LightTools 8.4版本软件,如下图为解压后的文件: 并选择 进行默认安装。 二、禁用数字签名。这里我用了两种方法,一种不行就换另一种,最终成功禁用。 方法1: 1、输入“cmd”并以管理员身份运行; 2、输入或复制 bcdedit.exe /set nointegritychecks on (此命令若没成功,再试bcded

weixin_45560953的博客 1万+

【嵌入式硬件】LAN9253说明书(中文版)

LAN9253是一款2/3端口EtherCAT从站控制器,具有双集成以太网PHY,每个PHY包含一个全双工100 BASE-TX收发器,支持100 Mbps(100 BASE-TX)操作。 LAN 9253支持HP Auto-MDIX,允许使用直接连接或交叉LAN电缆。支持EtherCAT P和信号质量指数PHY诊断。 LAN9253包括一个EtherCAT从站控制器,带有8K字节的双端口存储器(DPRAM)和8个现场总线存储器管理单元(FMMU)。每个FMMU将逻辑地址映射到物

qq_39200110的博客 2528

python多态性_Python中的多态性

什么是多态性:多态性这个词意味着有多种形式。在编程中,多态性意味着对不同类型使用相同的函数名。内置多态函数示例:# Python program to demonstrate in-built poly-# morphic functions# len() being used for a stringprint(len("geeks"))# len() being used for a list...

weixin_39996742的博客 1129

【软考中级网络工程师】知识点之 ICMP 协议

本文聚焦软考中级网络工程师必备的 ICMP 协议知识,先概述其在 TCP/IP 协议族网络层的地位与无连接特性,再阐述差错报告、网络诊断等功能。解析报文格式,详解差错与查询类报文类型及工作机制,还介绍其在 Ping、Traceroute 命令中的应用,分析常见攻击与防范措施,最后总结核心要点,为网络工程师学习和应用 ICMP 协议提供全面指导。

邓邓子的博客 1401

Python - 多态性

摘要:Python中的多态性是指同一接口在不同对象上呈现不同行为的能力。Python通过鸭子类型实现多态,只需对象具有对应方法即可调用,无需严格类型检查。实现方式包括:1)鸭子类型(不同类实现同名方法);2)运算符重载(如__add__方法);3)方法重写(子类覆盖父类方法);4)方法重载(通过可变参数模拟)。多态优势在于提高代码复用性和扩展性,使程序更简洁灵活。Python内置功能(如+运算符)也体现了多态特性。

路漫漫其修远兮,吾将上下而求索 803

OpenHarmony AI系列:神经网络处理单元(NPU)驱动架构与实现详解

NPU(Neural Processing Unit,神经网络处理单元)是专门为神经网络计算设计的硬件加速器。在OpenHarmony系统中,NPU驱动是通过NNRT(Neural Network Runtime,神经网络运行时)框架实现的,它作为中间桥梁连接上层AI推理框架和底层NPU硬件,实现AI模型的跨芯片推理计算。

m0_67505153的博客 665

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[Python学习日记-66] 多态与多态性

多态与多态性都是面向对象的特征之一,它们都是面向对象编程的一个重要概念,在 Python 当中也有一些独特的见解和用法,下面我们一起来了解一下是怎么回事吧。

JovaZou的成长之路 1230

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python怎样用C实现对象的多态性

在Python中,一切皆为对象,所有的对象都有一些相同的内容,在PyObject中定义。         //xk> 怎样实现继承         PyObject是Python中一切(new style)类的基类,其定义非常简单 //xk> Python3.2.2_Source/Include/Object.h typedef struct _object {

王之理想乡 1805

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python之多态性

主要介绍了Python中面向对象的内容,并深入理解面向对象中的 封装 继承 与多态 三个基本特性,以及在python中如何实现这些特性

qq_35968965的博客 1682

python多态_Python中的多态性

什么是多态性:多态性这个词意味着有多种形式。在编程中,多态性意味着对不同类型使用相同的函数名。内置多态函数示例:# Python program to demonstrate in-built poly- # morphic functions # len() being used for a string print(len("geeks")) # len() being used fo...

weixin_39617473的博客 158

python中对多态和多态性的理解

一、多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等。(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class Cat(Animal): #动物的形态之一:猫 def talk(self): print('say miaomiao'

Python热爱者的博客 532

Python中的多态性

Python中的多态性 面向对象编程的三大特性:封装性、继承性、多态性。下面用简单的比喻和举例带大家一起了解python语言中的多态性。 举例类比 比如上课时,老师对全班同学说:“大家把自己的名字写在各自的作业本上”,这时候,张三会在张三的本子上写上“张三”的名字,李四会在李四的作业本上写上“李四”的名字,王五会在王五的作业本上写上“王五”的名字,而老师口中的“自己”,此时在这里代表了班上不同的人,而写名字这件事,大家也都写上了各自的名字。这就是多态性。 延伸到python中,同一个变量“自己”,调用同一.

qq_37858910的博客 376
上一篇: Python中匿名函数lambda是什么
下一篇: python连接mysql数据库进行增删改查
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值