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的类方法和静态方法
Dec 13 Python
python将ip地址转换成整数的方法
Mar 17 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
深入理解python多进程编程
Jun 12 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
django中media媒体路径设置的步骤
Nov 15 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 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/05/20 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python编程中的文件操作攻略
2015/10/16 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
彻底理解Python中的yield关键字
2019/04/01 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
如何基于线程池提升request模块效率
2020/04/18 Python
如何利用Python识别图片中的文字
2020/05/31 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
小松树教学反思
2014/02/11 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
中学生逃课检讨书
2015/02/17 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
党员个人承诺书
2015/04/27 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers