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制作简单的朴素基数估计器的教程
Apr 01 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
Python中一些深不见底的“坑”
Jun 12 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
elasticsearch python 查询的两种方法
Aug 04 Python
Python threading模块condition原理及运行流程详解
Oct 05 Python
python 调用Google翻译接口的方法
Dec 09 Python
Python读写yaml文件
Mar 20 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实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
编写Js代码要注意的几条规则
2010/09/10 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
Python中的条件判断语句基础学习教程
2016/02/07 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
django 多数据库配置教程
2018/05/30 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python实现祝福弹窗效果
2019/04/07 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
python pymysql库的常用操作
2020/10/16 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
精伦电子Java笔试题
2013/01/16 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
工作自荐信
2013/12/11 职场文书
2015年党建工作总结
2015/03/30 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书