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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python实现websocket的客户端压力测试
Jun 25 Python
python修改文件内容的3种方法详解
Nov 15 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python 绘制可视化折线图
Jul 22 Python
python本地文件服务器实例教程
May 02 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python中list循环语句用法实例
2014/11/10 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python API自动化框架总结
2019/11/12 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
利用python实现汉诺塔游戏
2021/03/01 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
财务部岗位职责
2013/11/19 职场文书
奠基仪式策划方案
2014/05/15 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
python 统计代码耗时的几种方法分享
2021/04/02 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL