Python中操作符重载用法分析


Posted in Python onApril 29, 2016

本文实例讲述了Python中操作符重载用法。分享给大家供大家参考,具体如下:

类可以重载python的操作符

操作符重载使我们的对象与内置的一样。__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载。 python在计算操作符时会自动调用这样的方法,例如:

如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法。通过重载,用户定义的对象就像内置的一样。

在类中重载操作符

1、操作符重载使得类能拦截标准的python操作。
2、类可以重载所有的python的表达式操作符。
3、类可以重载对象操作:print,函数调用,限定等。
4、重载使得类的实例看起来更像内置的。
5、重载是通过特殊命名的类方法来实现的。

方法名        重载的操作说明        调用表达式
__init__    构造函数        创建对象:class()
__del__        析构函数        释放对象的时候
__add__        “+”            x + y
__or__        “|”            x | y
__repr__    打印,转换        print x, `x`
__call__    函数调用        X()
__getattr__    属性引用        x.undefined
__getitem__    索引            x[key],for循环,in测试
__setitem__    索引赋值        x[key] = value
__getslice__    分片            x[low:high]
__len__        长度            len(x)
__cmp__        比较            x == Y ,x < y
__radd__    右边的操作符"+"        非实例 + x

例子:

__getitem__拦截了所有的索引操作

>>> class indexer:
def __getitem__(self,index):
return index ** 2
>>> x = indexer()
>>> for i in range(5):
print x[i]  #x[i]将调用__getitem__(x,i)
0
1
4
9
16

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python守护进程和脚本单例运行详解
Jan 06 Python
Tensorflow之Saver的用法详解
Apr 23 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python之信息加密题目详解
Jun 26 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
python实现翻译word表格小程序
Feb 27 Python
python-xpath获取html文档的部分内容
Mar 06 Python
Python如何定义有默认参数的函数
Aug 10 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 #Python
Python过滤列表用法实例分析
Apr 29 #Python
Python松散正则表达式用法分析
Apr 29 #Python
python中私有函数调用方法解密
Apr 29 #Python
简单学习Python time模块
Apr 29 #Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 #Python
python遍历目录的方法小结
Apr 28 #Python
You might like
PHP的面向对象编程
2006/10/09 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
关于vue组件事件属性穿透详解
2019/10/28 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python脚本实现验证码识别
2018/06/07 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
运动会广播稿200字
2014/01/15 职场文书
小学清明节活动方案
2014/03/08 职场文书
幼教求职信
2014/03/12 职场文书
租房协议书样本
2014/08/20 职场文书
党员志愿者活动方案
2014/08/28 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
资产运营委托书范本
2014/10/16 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书