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通过pil模块获得图片exif信息的方法
Mar 16 Python
Python记录详细调用堆栈日志的方法
May 05 Python
python基于右递归解决八皇后问题的方法
May 25 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
Pytorch释放显存占用方式
Jan 13 Python
Python如何实现定时器功能
May 28 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
PHP 断点续传实例详解
2017/11/11 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
javascript常用的方法分享
2015/07/01 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python实现识别手写数字大纲
2018/01/29 Python
numpy返回array中元素的index方法
2018/06/27 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python 读取修改pcap包的例子
2019/07/23 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python中内建模块collections如何使用
2020/05/27 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
镇创先争优活动总结
2014/08/28 职场文书
敬老月活动总结
2014/08/28 职场文书
护士工作失误检讨书
2014/09/14 职场文书
党员转正大会主持词
2015/07/02 职场文书