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中用format函数格式化字符串的用法
Apr 08 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
python 将Excel转Word的示例
Mar 02 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
python可视化大屏库big_screen示例详解
Nov 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
PHP防CC攻击实现代码
2011/12/29 PHP
测试php函数的方法
2013/11/13 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
jquery实现公告翻滚效果
2015/02/27 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python单例模式实例详解
2017/03/01 Python
Python Flask基础教程示例代码
2018/02/07 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
2014全国两会学习心得体会1000字
2014/03/10 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
党员转正申请报告
2015/05/15 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
城南旧事电影观后感
2015/06/16 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
MySQL存储过程及语法详解
2022/08/05 MySQL