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中将字典转换成其json字符串
Jul 16 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
python实现Decorator模式实例代码
Feb 09 Python
简单了解python高阶函数map/reduce
Jun 28 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
在notepad++中实现直接运行python代码
Dec 18 Python
pyinstaller还原python代码过程图解
Jan 08 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
pytorch 6 batch_train 批训练操作
May 28 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php异常处理方法实例汇总
2015/06/24 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
two.js之实现动画效果示例
2017/11/06 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
vue观察模式浅析
2018/09/25 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python3实现字符串操作的实例代码
2019/04/16 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
python线程池如何使用
2020/05/28 Python
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
保安员岗位职责
2013/11/17 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
大学迎新生标语
2014/10/06 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
MySQL读取JSON转换的方式
2022/03/18 MySQL