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 15 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
python 异常处理总结
Oct 18 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
Python模块常用四种安装方式
Oct 20 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
PHP5 安装方法
2006/10/09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php实现读取内存顺序号
2015/03/29 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
javascript中setInterval的用法
2015/07/19 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
python双向链表实现实例代码
2013/11/21 Python
详解Python中的循环语句的用法
2015/04/09 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
前台文员岗位职责
2013/12/28 职场文书
保护环境的建议书
2014/03/12 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
流动人口婚育证明
2014/10/19 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
使用Python解决图表与画布的间距问题
2022/04/11 Python