首页 > 编程语言 >Python面向对象多态实现原理及代码实例

Python面向对象多态实现原理及代码实例

时间:2024-03-31 12:33:23浏览次数:28  
标签:Python 多态 Cat 面向对象 say Animal Dog 方法

Python面向对象编程中的多态性表示的是同一种操作可以在不同的对象上有不同的表现。多态性指的是可以无视对象的具体类型,而直接调用某个方法,这个方法会根据对象的实际类型而进行不同的操作。这是通过继承和重写方法实现的。
在Python中,任何类都有一个公共的祖先:object类。Python中的所有对象最终都会继承自这个基础类。这个特性允许我们在创建方法时,将参数类型设定为最基础的object。这样我们就可以接收任何类型的参数,并在方法中检查参数的具体类型,以便执行不同的操作。
下面通过一个简单的例子来进行说明:
python
class Animal(object):
def say(self):
raise NotImplementedError("Subclass must implement abstract method")

class Dog(Animal):
def say(self):
return "Woof! Woof!"

class Cat(Animal):
def say(self):
return "Meow!"

animals = [Dog(), Cat()]
for animal in animals:
print(animal.say())
在这个例子中,我们定义了一个基础类Animal,在这个基础类中定义了一个say方法,但这个方法并没有实现任何功能,而是抛出一个NotImplementedError异常。我们期望其子类去重写这个方法。
然后我们定义了两个Animal的子类:Dog和Cat,并各自重新定义了say方法,返回了各自的叫声。
当我们创建了Dog和Cat对象并放入列表,我们可以遍历这个列表,并调用里面每个动物的say方法,它们各自会执行各自的操作,这就体现了多态性。
来源:https://www.jdmm.com.cn/saishibaodao/21236.html
转发:https://www.jdmm.com.cn/saishibaodao/21235.html

标签:Python,多态,Cat,面向对象,say,Animal,Dog,方法
From: https://www.cnblogs.com/daocaorenqaq/p/18106593

相关文章

  • Python for Everybody
    Tuples   Exercise1:Reviseapreviousprogramasfollows:Readandparsethe“From”linesandpullouttheaddressesfromtheline.Countthenumberofmessagesfromeachpersonusingadictionary.Afterallthedatahasbeenread,printthepersonwitht......
  • 矩阵匹配【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-矩阵匹配从一个NM(N<=M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述:输入矩阵要求:1<=K<=N<=M<=150输入格式:NMKNM矩阵输出描述:N*M的矩阵中可以选出M!/N!种组合数组,每个组合数组中第K大的数中的......
  • 文本统计分析【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-文本统计分析有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量规则如下文本以";“分隔,最后一条可以没有”;",但空文本不能算语句,比如"COMMANDA;;"只能算一条语句.注意,无字符/空白字符/制表符都算作"空"文本文本可以跨行,比如下面,......
  • Python之Opencv进阶教程(2):统计图片灰度级别的像素数量
    1、什么是灰度像素数量在OpenCV中,可以使用**cv2.calcHist()**函数来计算图像的直方图。直方图是一种图形统计表,用于表示图像中每个灰度级别(或颜色通道)的像素数量或密度分布。以下是一个示例代码,演示了如何使用OpenCV计算和绘制图像的直方图:2、代码importcv2ascvimpor......
  • Python之Opencv进阶教程(1):图片模糊
    1、Opencv提供了多种模糊图片的方法加载原始未经模糊处理的图片importcv2ascvimg=cv.imread('../Resources/Photos/girl.jpg')cv.imshow('girl',img)1.1平均值关键代码#Averaging平均值a......
  • Python之Opencv教程(5):识别视频中的人脸
    1、识别效果2、识别代码importcv2ascvdefface_detect_demo(img):#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector=cv.CascadeClassifier("data//haarcascade_frontalface_alt.xml")fac......
  • Python装饰器实战:打造高效性能计时工具
    在数据分析工作中,针对百万,千万级别的数据进行分析是常有的事情,因此,分析代码性能的重要性不容忽视,能够有一个方便快速的测试函数性能的方法,对于我们快速发现性能瓶颈,及时优化,提高项目的开发效率至关重要。本文介绍如何通过Python装饰器来实现性能计时工具,帮助我们在不改变现有代码......
  • Python 潮流周刊第 44 期(摘要)+ 赠书 5 本《明解Python算法与数据结构》
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-03-30-weekly特别提醒:本期赠书5......
  • 6-92 链表基本操作(Python语言描述)
    本题要求在给出的链节点类、和单链表类部分代码的情况下,编写好基本操作的各种python3代码实现,最后调用测试代码检验。函数接口定义:已实现的链节点类、和单链表类部分代码。如下:classSingleNode(object):"""单链表的结点"""def__init__(self,item):#_i......
  • 在python中通过面向对象方式,实现烤地瓜案例
    例子:烤地瓜,不同时间,反馈不同状态,并给不同状态地瓜加入不同味道烤地瓜时间0-3分钟,生的4-7分钟,半生不熟的8-12分钟,熟了12分钟以上,已烤熟,糊了用户可以按自己的意思添加调料烤地瓜类:SweetPotato时间:cooktime状态:Cookstate调料:condiments代码实现:classSweetPot......