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 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
Python使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python实现购物车购物小程序
Apr 18 Python
Python内存读写操作示例
Jul 18 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
解决Python3下map函数的显示问题
Dec 04 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 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递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python实现人民币大写转换
2018/06/20 Python
Python分类测试代码实例汇总
2020/07/23 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
旷课检讨书
2015/01/26 职场文书
武夷山导游词
2015/02/03 职场文书
党员转正大会主持词
2015/07/02 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
php引用传递
2021/04/01 PHP
详解CocosCreator项目结构机制
2021/04/14 Javascript
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server