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网页请求urllib2模块简单封装代码
Feb 07 Python
深入Python函数编程的一些特性
Apr 13 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python实现的简单排列组合算法示例
Jul 04 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Python实现寻找回文数字过程解析
Jun 09 Python
python获取命令行参数实例方法讲解
Nov 02 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 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 之Section与Cookie使用总结
2012/09/14 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
yii2安装详细流程
2018/05/23 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书