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 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
Python自定义线程池实现方法分析
Feb 07 Python
Python单元测试简单示例
Jul 03 Python
Django 实现购物车功能的示例代码
Oct 08 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Python内置函数locals和globals对比
Apr 28 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
python3美化表格数据输出结果的实现代码
Apr 14 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
Python编写冷笑话生成器
Apr 20 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获得当前的脚本网址
2007/12/10 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
javascript读取RSS数据
2007/01/20 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
javascript实现回到顶部特效
2015/05/06 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
小学生考试获奖感言
2014/01/30 职场文书
新学期标语
2014/06/30 职场文书
教师党员个人剖析材料
2014/09/29 职场文书