博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python面向对象——多态
阅读量:4620 次
发布时间:2019-06-09

本文共 1278 字,大约阅读时间需要 4 分钟。

多态的作用

调用不同的子类将会产生不同的行为。

多态是在继承上实现的。

图解多态1

1372901-20180415225616074-1496426127.jpg

图解多态2

1372901-20180415225703555-1252045034.jpg

图解多态1代码

class AudioFile:    def __init__(self, filename):        if not filename.endswith(self.ext):            raise Exception("Invalid file format")        self.filename = filename        class MP3File(AudioFile):    ext = "mp3"    def play(self):        print("playing {} as mp3".format(self.filename))        class WavFile(AudioFile):    ext = "wav"    def play(self):        print("playing {} as wav".format(self.filename))        class OggFile(AudioFile):    ext = "ogg"    def play(self):        print("playing {} as ogg".format(self.filename))ogg = OggFile("myfile.ogg")ogg.play()mp3 = MP3File("myfile.mp3")mp3.play()not_an_mp3 = MP3File("myfile.ogg")not_an_mp3.play()

图解多态2代码

(参考https://www.cnblogs.com/luchuangao/p/6739557.html)

#多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度)class Animal:    def run(self):        raise AttributeError('子类必须实现这个方法')  class People(Animal):    def run(self):        print('人正在走') class Pig(Animal):    def run(self):        print('pig is walking')  class Dog(Animal):    def run(self):        print('dog is running') peo1=People()pig1=Pig()d1=Dog() peo1.run()pig1.run()d1.run()

参考:本文参考学习《Python3 Object Oriented Programming》,根据自己理解改编,Dusty Phillips 著

转载于:https://www.cnblogs.com/brightyuxl/p/8850049.html

你可能感兴趣的文章
BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
查看>>
安装ejabberd2并配置MySQL为其数据库
查看>>
angular repeat
查看>>
android 图片圆角化控件
查看>>
java第三次作业
查看>>
HP Jack介绍
查看>>
敏捷软件开发(3)---COMMAND 模式 & Active Object 模式
查看>>
poj 1062 昂贵的聘礼 解题报告
查看>>
get the page name from url
查看>>
visual studio中csproj文件中的project guid改为小写 ( notepad++ 正则)
查看>>
TeeChart显示三维的图形,使用Surface
查看>>
如何使用 Idea 远程调试 Java 代码
查看>>
加密,解密
查看>>
在C#代码中应用Log4Net(一)简单使用Log4Net
查看>>
[转]如何写软件项目技术标
查看>>
每日站立会议个人博客五
查看>>
ddd
查看>>
死磕 java同步系列之AQS起篇
查看>>
利用Lucene把文本的字体格式进行改动,然后输出到一个新的文件里
查看>>
[Openstack] Expecting an auth URL via either --os-auth-url or env[OS_AUTH_URL]
查看>>