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在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
django接入新浪微博OAuth的方法
Jun 29 Python
详解python时间模块中的datetime模块
Jan 13 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
May 13 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
python3 反射的四种基本方法解析
Aug 26 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
如何在C++中调用Python
May 21 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
PHP session会话的安全性分析
2011/09/08 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
php中请求url的五种方法总结
2017/07/13 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
原生js实现日历效果
2020/03/02 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python pickle模块用法实例分析
2015/05/27 Python
python 定时修改数据库的示例代码
2018/04/08 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
先进工作者申报材料
2014/12/23 职场文书
迎国庆主题班会
2015/08/17 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python