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 07 Python
python比较2个xml内容的方法
May 11 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
django允许外部访问的实例讲解
May 14 Python
Python日志模块logging基本用法分析
Aug 23 Python
python实现代码统计器
Sep 19 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
在主流系统之上安装Pygame的方法
May 20 Python
Python random模块的使用示例
Oct 10 Python
用python读取xlsx文件
Dec 17 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连接被重置的解决方法
2011/02/15 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
详解vue 命名视图
2019/08/14 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
python画折线图的程序
2018/07/26 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
三年大学自我鉴定
2014/01/16 职场文书
关于打架的检讨书
2014/01/17 职场文书
启动仪式策划方案
2014/06/14 职场文书
保险公司演讲稿
2014/09/02 职场文书
北京英文导游词
2015/02/12 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
python字符串的多行输出的实例详解
2021/06/08 Python
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers