python学习手册中的python多态示例代码


Posted in Python onJanuary 21, 2014

在处理多态对象时,只需要关注它的接口即可,python中并不需要显示的编写(像Java一样)接口,在使用对象的使用先假定有该接口,如果实际并不包含,在运行中报错。

class handGun():
    def __init__(self):
        pass
    def fire(self):
        print 'handGun fire'
class carbine():
    def __init__(self):
        pass
    def fire(self):
        print 'carbine fire'
import handGun
import carbine
class gunFactory():
    def __init__(self,gun_type):
        self.gun_type = gun_type
    def produce(self):
        if handGun == self.gun_type:
            return handGun.handGun()
        else:
            return carbine.carbine()

客户端

fa = gunFactory(handGun)
gun = fa.produce()
/*只要是枪,就认为它具有开火的功能,如果没有开火的功能,程序运行中就报错*/
gun.fire()

可以看到跟一般的静态语言相比,python并没有在语言级别来保证接口的正确性,只能依靠文档、代码来保证(可以在代码中检查接口是否存在,hasattr(gun,'fire'))

Python 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
python3中bytes和string之间的互相转换
Feb 09 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
python实现电脑自动关机
Jun 20 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python requests模拟登陆github的实现方法
Dec 26 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
python pdb调试方法分享
Jan 21 #Python
python发送邮件接收邮件示例分享
Jan 21 #Python
python逐行读取文件内容的三种方法
Jan 20 #Python
c++生成dll使用python调用dll的方法
Jan 20 #Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 #Python
python字符串加密解密的三种方法分享(base64 win32com)
Jan 19 #Python
python实现人人网登录示例分享
Jan 19 #Python
You might like
简单的PHP留言本实例代码
2010/05/09 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
jQuery 解析xml文件
2009/08/09 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
详解javascript函数的参数
2015/11/10 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
python中实现控制小数点位数的方法
2019/01/24 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
二年级数学教学反思
2016/02/16 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏