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进行稳定可靠的文件操作详解
Dec 31 Python
Python中的魔法方法深入理解
Jul 09 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python实现读取机器硬件信息的方法示例
Jun 09 Python
Django如何开发简单的查询接口详解
May 17 Python
python 猴子补丁(monkey patch)
Jun 26 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
python标准库os库的函数介绍
Feb 12 Python
Keras设置以及获取权重的实现
Jun 19 Python
python 装饰器的使用示例
Oct 10 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.ini中文版(2)
2006/10/09 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
python处理中文编码和判断编码示例
2014/02/26 Python
python中List的sort方法指南
2014/09/01 Python
Django入门使用示例
2017/12/12 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python实现超市扫码仪计费
2018/05/30 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
python进行TCP端口扫描的实现
2018/12/21 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
营销人才自我鉴定范文
2013/12/25 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
个人学习总结范文
2015/02/15 职场文书
法律进社区活动总结
2015/05/07 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
单位提档介绍信
2015/10/22 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
mybatis 获取更新记录的id
2022/05/20 Java/Android