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下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
通过cmd进入python的实例操作
Jun 26 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
Python如何读取文件中图片格式
Jan 13 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
没编程基础可以学python吗
Jun 17 Python
Python代码注释规范代码实例解析
Aug 14 Python
python 爬取B站原视频的实例代码
Sep 09 Python
python 实现波浪滤镜特效
Dec 02 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 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禁用cookie后session设置方法分析
2016/10/19 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
Prototype Number对象 学习
2009/07/19 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
Python中用于计算对数的log()方法
2015/05/15 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python对Excel的读取的示例代码
2020/02/14 Python
django 读取图片到页面实例
2020/03/27 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
总经理岗位职责
2013/11/09 职场文书
自我评价格式
2014/01/06 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
人事代理委托书
2014/09/27 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers