Python中操作符重载用法分析

作者:阿涵-_- 时间:2023-04-05 12:34:51 

本文实例讲述了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,操作符,重载
0
投稿

猜你喜欢

  • 深入理解python中的ThreadLocal

    2022-02-08 11:40:03
  • echo(),print(),print_r()之间的区别?

    2023-11-15 08:52:42
  • 如何在ADO服务器端利用好缓存技术?

    2010-06-17 12:49:00
  • 基于Python的身份证号码自动生成程序

    2022-11-29 02:00:33
  • golang协程关闭踩坑实战记录

    2024-02-13 00:02:57
  • Python实现一个转存纯真IP数据库的脚本分享

    2024-01-17 16:43:38
  • CSS改变字体而不影响网页

    2010-10-20 20:11:00
  • MySQL Server 5.0安装教程(图解)

    2010-10-14 14:26:00
  • PHP和JavaScrip分别获取关联数组的键值示例代码

    2023-06-16 05:30:51
  • PyTorch 迁移学习实践(几分钟即可训练好自己的模型)

    2021-09-07 23:37:31
  • python 中collections的 deque使用详解

    2023-02-07 15:43:14
  • Python中的异常处理学习笔记

    2023-06-26 05:04:29
  • PHP实现设计模式中的抽象工厂模式详解

    2024-06-05 09:39:58
  • python 包之 re 正则匹配教程分享

    2021-10-15 18:36:41
  • Python爬虫框架Scrapy实战之批量抓取招聘信息

    2022-03-28 11:38:09
  • 打印出python 当前全局变量和入口参数的所有属性

    2022-09-01 07:06:51
  • JavaScript中 this 指向问题深度解析

    2024-05-03 15:04:14
  • 利用Python 实现分布式计算

    2021-12-21 22:59:26
  • 一文弄懂MYSQL如何列转行

    2024-01-17 18:05:21
  • Django模板Templates使用方法详解

    2023-04-22 07:40:47
  • asp之家 网络编程 m.aspxhome.com