python 多态app_python 多态实例
python 多态实例
# coding:utf-8
"""
多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,
而系统可依据对象所属类,引发对应类的方法,而有不同的行为。
简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之。
在面向对象程序设计中,多态一般指子类型多态(Subtype polymorphism)。
上面的定义有点让初学者费解,黄哥用“打开”这个动作来描述面向对象的多态。
"打开",可以是打开门,打开窗户,打开书等等。"打开"这个动作,碰到不同的对象门,窗户,书,有不同的行为模式。
这个就是多态。
本文由黄哥python培训,黄哥所写
黄哥python远程视频培训班
https://github.com/pythonpeixun/article/blob/master/index.md
黄哥python培训试看视频播放地址
https://github.com/pythonpeixun/article/blob/master/python_shiping.md
"""
# 例1
class Door(object):
def open(self):
print "打开门"
class Windows(object):
def open(self):
print "打开窗户"
class Book(object):
def open(self):
print "打开书"
lst = [Door(), Windows(), Book()]
for item in lst:
item.open()
# 例2 一般用继承来说明多态的例子
class Animal:
def __init__(self, name):
self.name = name
def talk(self):
raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
def talk(self):
return 'Meow!'
class Dog(Animal):
def talk(self):
return 'Woof! Woof!'
animals = [Cat('Missy'),
Cat('Mr. Mistoffelees'),
Dog('Lassie')]
for animal in animals:
print animal.name + ': ' + animal.talk()
# 例3 python 内置有很多多态的应用
# 同样的 +号 可以用在不同的对象相加,体现(相仿:指相加这个事情)了多态的功能。
print 1 + 2
print "hello" + '黄哥'
# len 函数传不同的参数,也体现了多态的功能。
print len("黄哥python培训")
print len([2, 4, 5, 7])
# 工程应用
# 一个简单的日志记录函数,用判断实现的,重构为面向对象多态来实现。
#如果有大量的判断语句,就可以用多态来实现。
def log_msg(log_type):
msg = 'Operation successful'
if log_type == 'file':
log_file.write(msg)
elif log_type == 'database':
cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)
#重构
class FileLogger(object):
def log(self, msg):
log_file.write(msg)
class DbLogger(object):
def log(self, msg):
cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)
def log_msg(obj):
msg = 'Operation successful'
obj.log(msg)
python 多态app_python 多态实例相关推荐
- python 多态app_python 多态
class xiaobai: def say(self): print("调用的是xiaobai类的say方法") class lilei(xiaobai): #lilei类继承x ...
- python 多态app_Python——多态
因之前写的多态 的例子,似乎有点问题,现在重写改造了一下.""" 多态的特性是调用不同的子类将会产生不同的行为,而无需明确知道这个子类实际上是什么 "" ...
- 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作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...
- Python面向对象之多态
一.什么是多态? 一句话概括:父类类型接收子类对象. 多态是面向对象的三大特征之一. 多态从字面上理解是多种形态,一个对象可以以不同的形态去呈现. eg:狗(狼狗.藏獒.哈士奇.古牧 ...) 多态比 ...
最新文章
- html设置box设置长度自适应,CSS实现宽度自适应宽高16:9的矩形的示例
- 十张图了解2021年中国数据中心产业链投资现状和投资并购发展趋势
- git如何合并指定文件内容_git小技巧--如何从其他分支merge个别文件或文件夹
- 计算球的体积(信息学奥赛一本通-T1030)
- spring5(6) ---Ioc和DI
- php 返回设置时间戳,PHP-返回int时间戳而不是datetime
- denoiser插件_最新版AE/PR红巨人调色降噪插件合集 Magic Bullet Suite 13.0.9 Win/Mac
- 笨鸟先飞学编程系列之二 基础代码的编写
- 使用PS制作毛玻璃效果
- 今天身边的一个好友想的一个点子,可能会颠覆传统电商网,称为线上商店和线下商店的最后收割者
- Python通过哈希算法实现文件完整性校验-以及大型文件完整性校验
- Win10系统导出证书私钥及公钥
- c++ 计算正弦的近似值_C语言中计算正弦的相关函数总结
- Django DRF routers路由使用
- 韩版机泛泰A850改mms.apk去除收到短信的国家代码
- 一度智信:拼多多探路知识普惠
- 浏览器打不开计算机二级网页,网页打不开,其他正常,ie浏览器打不开二级页面...
- c语言实现翻页,css3实现翻页卡片
- unity多人联机插件_别在纠结“后端”开发了,联机小游戏还可以这样做!
- html 图片比例 js,js自动等比例设置图片尺寸大小
热门文章
- 关于nba的html设计,关于NBA篮球网页的设计毕业设计论文.pdf
- C++stack与queue模拟实现
- 协议的起始位,停止位
- 14.spring aop之aspect切入点语法详解
- Java常见面试题_理论+实践
- strtus1 html5,struts1.x的入门级学习教程
- 微信小程序map 地图引入配置+腾讯地图地址坐标解析
- CTF——AWD模式小总结
- oracle 倒库详细步骤,超详细的倒车入库步骤
- 百度与吉利联合制造智能电动汽车;霍尼韦尔2020年度10大创新科技揭晓 | 美通企业日报...