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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
python用for循环求和的方法总结
Jul 08 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Python实现给PDF添加水印的方法
Jan 25 Python
一行代码python实现文件共享服务器
Apr 22 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python django中如何使用restful框架
Jun 23 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 win下Socket方式发邮件类
2009/08/21 PHP
详解PHP中的PDO类
2015/07/06 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
什么是JavaScript
2009/08/13 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
python数据化运营的重要意义
2019/11/25 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
高中生职业生涯规划书
2014/02/24 职场文书
人力资源主管职责范本
2014/03/05 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
机械专业技术员求职信
2014/06/14 职场文书
早读课迟到检讨书
2014/09/25 职场文书
订货会主持词
2015/07/01 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
详解Vue的options
2021/05/15 Vue.js
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis