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 01 Python
Python运用于数据分析的简单教程
Mar 27 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
Python3 log10()函数简单用法
Feb 19 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
python 求10个数的平均数实例
Dec 16 Python
利用python画出AUC曲线的实例
Feb 28 Python
Python实现的北京积分落户数据分析示例
Mar 27 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
关于jquery css的使用介绍
2013/04/18 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
python求解水仙花数的方法
2015/05/11 Python
python监控文件或目录变化
2016/06/07 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
快速查找Python安装路径方法
2020/02/06 Python
Python中有几个关键字
2020/06/04 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
华三通信H3C面试题
2015/05/15 面试题
化学教师教学反思
2014/01/17 职场文书
学历公证书范本
2014/04/09 职场文书
化工专业求职信
2014/07/01 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
民事答辩状格式范文
2015/05/21 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python
go goth封装第三方认证库示例详解
2022/08/14 Golang