python 多态app_Python——多态
因之前写的多态 的例子,似乎有点问题,现在重写改造了一下。"""
多态的特性是调用不同的子类将会产生不同的行为,而无需明确知道这个子类实际上是什么
"""
class AudioFile:
def __init__(self, filename):
if not filename.endswith(self.ext): #检测来自子类的ext变量是否以按指定的格式结尾,如果不是则引发异常(初始化音频文件需按指定的格式)
raise Exception("Invalid file format")
self.filename = filename
class MP3File(AudioFile):
ext = "mp3"
def play(self):
#mp3音频具体的处理细节
print("play %s music..." % self.filename)
class WavFile(AudioFile):
ext = "wav"
def play(self):
#wav音频具体的处理细节
print("play %s music..." % self.filename)
class OggFile(AudioFile):
ext = "ogg"
def play(self):
#ogg音频具体的处理细节
print("play %s music..." % self.filename)
class Player:
#这是一个播放器,用于播放不同格式的音频
def start(self, audio):
print("Initialize {0} format audio files".format(audio.ext))
print("Audio file: {0} playing".format(audio.filename))
audio.play()
if __name__ == '__main__':
#创建一个播放器
player = Player()
#创建3个不同格式的音频文件
ogg = OggFile("hello.ogg")
mp3 = MP3File("free abc.mp3")
wav = WavFile("love.wav")
#播放器播放音乐
player.start(ogg)
#看起来好像都是调用了同一个play()方法,但每不同格式的音频文件所实现的功能是不同的
python 多态app_Python——多态相关推荐
- python 多态app_python 多态
class xiaobai: def say(self): print("调用的是xiaobai类的say方法") class lilei(xiaobai): #lilei类继承x ...
- python 多态app_python 多态实例
python 多态实例 # coding:utf-8 """ 多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象, 而 ...
- python 继承和多态
python 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Ba ...
- Python的继承多态
Python的继承多态 文章目录 Python的继承多态 一.私有属性和私有方法 01. 应用场景及定义方式 02. 伪私有属性和私有方法 二.单例 01. 单例设计模式 单例设计模式的应用场景 02 ...
- python多态_多态是什么?为什么要使用多态?
多态 所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态 ,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型". 鸭子类型:虽然我想要一只& ...
- python中的多态用法_Python面向对象之多态原理与用法案例分析
本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- python继承和多态心得_python学习第十五天 -面向对象之继承和多态
大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...
- Python面向对象编程---多态
Python面向对象编程-多态 定义: 是一种使用对象的方式,子类重写父类的方法(非必须),调用不同子类对象的相同父类方法,可以产生不同的执行结果,简言之就是:传入不同的对象,产生不同的结果. 好处: ...
- python封装继承多态_Python:封装、继承、多态、私有成员
Python作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...
最新文章
- linux share目录 多个机器访问,如何在linux下网上邻居访问另一台机windows共享的目录?(急)...
- 特征工程学习,19 项实践 Tips!代码已开源!
- 《圣殿祭司的ASP.NET4.0专家技术手册》---- 1-13 ClientBuilderManager类别的编译功能...
- 备份----硬盘对拷
- mysql是面向对象的语言吗_php一种面向对象的语言,那么什么是面向对象呢?
- leetcode 1143. 最长公共子序列
- 文顶顶 iOS开发UI篇—UITabBarController简单介绍 iOS开发UI篇—UITabBarController简单介绍...
- Mysql基本用法-left join、right join、 inner join、子查询和join-02
- 算法面试:精选微软等公司经典的算法面试100题 第26-35题
- 相关系数矩阵计算_corrplot包:相关性矩阵可视化
- 拼多多上线直播、火车票业务引关注,回应:仅是两个服务插件
- AtomicStampedReference
- MySQL 5.7详细下载安装配置教程
- (转)996下的程序员,该如何保证自己的身体健康?
- 云手机虚拟机服务器配置,云手机虚拟机服务器
- HDU 1847 ——Good Luck in CET-4 Everybody!
- 【SAP Basis】SAP用户账号管理
- 内联函数let、also、with、run、apply的用法
- HEIC文件怎么打开,如何将HEIC格式转换为JPG格式
- 后端jar包 设置成服务 开机自启动
热门文章
- 为macbook双系统的windows装驱动
- 超简单修改权限破解typora beta版本(备忘)
- 浅谈你们根本不懂的区块链游戏
- 线上培训上课实录整站设计制作开发全能培训-彭亮-专题视频课程
- 第三代测序成本偏高是什么原因导致的? 是看了这道题下面的邹捷萌回答:现在基因测序的瓶颈主要在哪里?精度?速度? 在精确度方面第三代测序已经很高了,但目前国内生物实验室的测序还是以二代为主,推测成本可能
- 猪猪侠的黑客学习路线
- python 百度云搜索引擎入口_2016最新百度云网盘搜索引擎源码,附带Python爬虫+PHP网站+Xunsearch搜索引擎...
- python tornado异步_python tornado异步性能测试
- 神一般的科学“超人”尼古拉-特斯拉!
- SAP S4 库存管理 技术分享