特殊方法和运算符重载

Python的运算符实际是通过对象的调用实现的

特殊方法:

方法 说明 举例
__init__ 构造方法 对象创建:P=Person
__del__ 析构方法 对象回收
__repr__ , __str__ 打印,转换 print(a)
__call__ 函数调用 a()
__getatter__ 点号运算 a.xxx
__getitem__ 索引运算 a[key]
__setitem__ 索引赋值 a[key] = value
__len__ 长度 len(s)

 

每个运算符实际上都对应了相应的方法:

运算符 特殊方法 说明
+ __add__ 加法
- __sub__ 减法
<   <=   == __lt__ , __le__ , __eq__ 比较运算符
>   >=   != __gt__ , __ge__ , __ne__
|   ^  & __or__ , __xor__ , __and__ 或,异或,与
<<    >> __lshift__ , __rshift__ 左移,右移
*  /   %   // __mul__ , __truediv__ , __mod__ , __floordiv__ 乘,浮点除,取余(模),地板除
** __pow__ 指数

 

 1 class Person:
 2     def __init__(self,name):
 3         self.name = name
 4 
 5     def __add__(self, other):
 6         if isinstance(other,Person):
 7             return '{0}--{1}'.format(self.name,other.name)
 8         else:
 9             print('非同类对象')
10 
11 p1 = Person('Xujie')
12 p2 = Person('ian')
13 
14 x = p1+p2
15 print(x)