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 多态实例相关推荐

  1. python 多态app_python 多态

    class xiaobai: def say(self): print("调用的是xiaobai类的say方法") class lilei(xiaobai): #lilei类继承x ...

  2. python 多态app_Python——多态

    因之前写的多态 的例子,似乎有点问题,现在重写改造了一下.""" 多态的特性是调用不同的子类将会产生不同的行为,而无需明确知道这个子类实际上是什么 "" ...

  3. python 继承和多态

    python 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Ba ...

  4. Python的继承多态

    Python的继承多态 文章目录 Python的继承多态 一.私有属性和私有方法 01. 应用场景及定义方式 02. 伪私有属性和私有方法 二.单例 01. 单例设计模式 单例设计模式的应用场景 02 ...

  5. python多态_多态是什么?为什么要使用多态?

    多态 所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态 ,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型". 鸭子类型:虽然我想要一只& ...

  6. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. python继承和多态心得_python学习第十五天 -面向对象之继承和多态

    大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...

  8. python封装继承多态_Python:封装、继承、多态、私有成员

    Python作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...

  9. Python面向对象之多态

    一.什么是多态? 一句话概括:父类类型接收子类对象. 多态是面向对象的三大特征之一. 多态从字面上理解是多种形态,一个对象可以以不同的形态去呈现. eg:狗(狼狗.藏獒.哈士奇.古牧 ...) 多态比 ...

最新文章

  1. html设置box设置长度自适应,CSS实现宽度自适应宽高16:9的矩形的示例
  2. 十张图了解2021年中国数据中心产业链投资现状和投资并购发展趋势
  3. git如何合并指定文件内容_git小技巧--如何从其他分支merge个别文件或文件夹
  4. 计算球的体积(信息学奥赛一本通-T1030)
  5. spring5(6) ---Ioc和DI
  6. php 返回设置时间戳,PHP-返回int时间戳而不是datetime
  7. denoiser插件_最新版AE/PR红巨人调色降噪插件合集 Magic Bullet Suite 13.0.9 Win/Mac
  8. 笨鸟先飞学编程系列之二 基础代码的编写
  9. 使用PS制作毛玻璃效果
  10. 今天身边的一个好友想的一个点子,可能会颠覆传统电商网,称为线上商店和线下商店的最后收割者
  11. Python通过哈希算法实现文件完整性校验-以及大型文件完整性校验
  12. Win10系统导出证书私钥及公钥
  13. c++ 计算正弦的近似值_C语言中计算正弦的相关函数总结
  14. Django DRF routers路由使用
  15. 韩版机泛泰A850改mms.apk去除收到短信的国家代码
  16. 一度智信:拼多多探路知识普惠
  17. 浏览器打不开计算机二级网页,网页打不开,其他正常,ie浏览器打不开二级页面...
  18. c语言实现翻页,css3实现翻页卡片
  19. unity多人联机插件_别在纠结“后端”开发了,联机小游戏还可以这样做!
  20. html 图片比例 js,js自动等比例设置图片尺寸大小

热门文章

  1. 关于nba的html设计,关于NBA篮球网页的设计毕业设计论文.pdf
  2. C++stack与queue模拟实现
  3. 协议的起始位,停止位
  4. 14.spring aop之aspect切入点语法详解
  5. Java常见面试题_理论+实践
  6. strtus1 html5,struts1.x的入门级学习教程
  7. 微信小程序map 地图引入配置+腾讯地图地址坐标解析
  8. CTF——AWD模式小总结
  9. oracle 倒库详细步骤,超详细的倒车入库步骤
  10. 百度与吉利联合制造智能电动汽车;霍尼韦尔2020年度10大创新科技揭晓 | 美通企业日报...