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中面向对象编程的相关知识
May 25 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
python分割列表(list)的方法示例
May 07 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
微信小程序python用户认证的实现
Jul 29 Python
python global关键字的用法详解
Sep 05 Python
python config文件的读写操作示例
Sep 27 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
php解析url的三个示例
2014/01/20 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Javascript的一种模块模式
2008/03/22 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python探索之Metaclass初步了解
2017/10/28 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
教师批评与自我批评材料
2014/10/16 职场文书
基层工作经验证明样本
2014/11/16 职场文书
工作检讨书大全
2015/01/26 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
七年级生物教学反思
2016/02/20 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android