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中为feedparser设置超时时间避免堵塞
Sep 28 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
Python元字符的用法实例解析
Jan 17 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Python3 修改默认环境的方法
Feb 16 Python
Django重置migrations文件的方法步骤
May 01 Python
pip指定python位置安装软件包的方法
Jul 12 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
php curl基本操作详解
2013/07/23 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python简易版停车管理系统
2019/08/12 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
接受捐赠答谢词
2014/01/27 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
小学生家长寄语
2014/04/02 职场文书
2015年派出所工作总结
2015/04/24 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
高三生物教学反思
2016/02/22 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技