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实现颜色rgb和hex相互转换的函数
Mar 19 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
python中几种自动微分库解析
Aug 29 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
tensorflow 限制显存大小的实现
Feb 03 Python
Opencv python 图片生成视频的方法示例
Nov 18 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的问题分析及解决
2013/05/16 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
JavaScript高级程序设计
2006/12/29 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
js+html实现点名系统功能
2019/11/05 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
对于Python的框架中一些会话程序的管理
2015/04/20 Python
python开发中range()函数用法实例分析
2015/11/12 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
Python中的With语句的使用及原理
2020/07/29 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
求职简历自荐信
2013/10/20 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
中药学专业求职信
2014/05/31 职场文书
规范化管理年活动总结
2014/08/29 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书