Python 第八节 第十二课

[toc]

特殊方法和运算符重载

Python 的运算符实际上是通过调用对象的特殊方法实现的. 比如:

Python 第八节 第十二课

执行结果:

Python 第八节 第十二课

常见的特殊方法统计如下:

__init__                        构造方法                 对象创建: p = Person()

__del__                        析构方法                 对象回收  对象回收

__repr__, __str__        打印, 转换                print(a)

__call__                       函数调用                  a()

__getattr__                   点号运算                  a.xxx

__satattr__                   属性赋值                  a.xxx = value

__gettitem__                 索引运算                  a[key]

__setitem__                  索引赋值                  a[key]

__len__                         长度                         len(a)

每个运算符实际上都是应对了相应的方法, 统计如下:

运算符+              __add__                              加法

运算符-               __sub__                              减法

<, <=, ==            __it__, __le__, __eq__        比较运算符

>, >=, !=             __gt__, __ge__, __ne__      比较运算符

|, ^, &                 __or__, __xor__, __and__   或, 异或, 与

<<, >>                __lshift__, __rshift__            左移, 右移

*, /                      __mul__, __truediv__          乘, 浮点除

%, //                   __mod__, __floordiv__         模运算 ( 取余), 整数除

**                        __pow__                               指数运算

我们可以重写上面的特殊方法, 即实现了 "运算符的重载".

Python 第八节 第十二课

执行结果:

Python 第八节 第十二课