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 map和reduce函数用法示例
Feb 26 Python
python简单程序读取串口信息的方法
Mar 13 Python
粗略分析Python中的内存泄漏
Apr 23 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Python之Class&Object用法详解
Dec 25 Python
Python使用type动态创建类操作示例
Feb 29 Python
Python configparser模块配置文件过程解析
Mar 03 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python openpyxl 插入折线图实例
Apr 17 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
QT5 Designer 打不开的问题及解决方法
Aug 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 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
React diff算法的实现示例
2018/04/20 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
深入理解python中的闭包和装饰器
2016/06/12 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
详解Python是如何实现issubclass的
2019/07/24 Python
python deque模块简单使用代码实例
2020/03/12 Python
python缩进长度是否统一
2020/08/02 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
智能电子应届生求职信
2013/11/10 职场文书
音乐学个人的自荐书范文
2013/11/26 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
公司会计岗位职责
2014/02/13 职场文书
机关搬迁方案
2014/05/18 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
交通安全横幅标语
2014/10/07 职场文书
个人作风建设总结
2014/10/23 职场文书
小学思品教学反思
2016/02/20 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers