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 strip()函数 介绍
May 24 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
Windows下PyMongo下载及安装教程
Apr 27 Python
python实现决策树
Dec 21 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
python实现图片转字符小工具
Apr 30 Python
详解如何减少python内存的消耗
Aug 09 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
python中安装django模块的方法
Mar 12 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 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过滤XSS攻击的函数
2013/11/12 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python中Django文件上传方法详解
2020/08/05 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
高中生毕业自我鉴定
2013/10/10 职场文书
老师推荐信
2013/10/28 职场文书
会计专业求职信范文
2014/03/16 职场文书
爽歪歪广告词
2014/03/20 职场文书
专业技术职务聘任书
2014/03/29 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
《藏戏》教学反思
2016/02/23 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL