12. 特殊方法总结

运算符重载 回顾

运算符重载是指通过自定义类中的特殊方法来让自定义的类创建的对象可以使用运算符进行操作。

类相关的特殊方法

类别
方法名
对象创建、初始化和销毁
__new__, __init__, __del__
字符串表示形式
__repr__, __str__
数值转换
__int__, __float__, __complex__, __bool__
数值运算
__abs__, __round__
集合模拟
__len__, __reversed__
可迭代对象和迭代器
__iter__, __next__
函数调用
__call__
上下文管理
__enter__, __exit__
描述符协议
__get__, __set__, __delete__

运算符相关的特殊方法

类别
方法名
对应的运算符
算术运算符
__add__, __sub__, __mul__, __truediv__, __floordiv__, __mod__, __pow__, __matmul__
+,-,*,/,//,%,@
反向算术运算符
__radd__, __rsub__, __rmul__, __rtruediv__, __rfloordiv__, __rmod__, __rpow__,__rmatmul__
+,-,,/,//,%,*,@
增强赋值算术运算符
__iadd__, __isub__, __imul__, __itruediv__, __ifloordiv__, __imod__, __ipow__,__imatmul__
+=,-=,=,/=,//=,%=,*=,@
比较运算符
__lt__, __le__, __gt__, __ge__, __eq__, __ne__
<,<=,>,>=,==,!=
位运算符
__and__, __or__, __xor__, __lshift__, __rshift__
&,|,^,<<,>>
反向位运算符
__rand__, __ror__, __rxor__, __rlshift__, __rrshift__
&,|,^,<<,>>
增强赋值位运算符
__iand__, __ior__, __ixor__, __ilshift__, __irshift__
&=,|=,^=,<<=,>>=
一元运算符
__neg__, __pos__, __invert__
-,+,~
索引和切片
__getitem__, __setitem__, __delitem__
z = x[y], x[y] = z, del x[y]
属性访问与控制
__getattr__, __getattribute__, __setattr__, __delattr__
z = x.y, x.y = z, del x.y
成员检测运算符
__contains__
in, not in

不能被重载的运算符

运算符
说明
and、or、not
布尔运算
is、is not
对象ID比较
=
赋值语句分隔符

查看列表 list 类的特殊方法

当我们拿到一个类,不知道这个类如何来用的时候。我们可以用它来创建一个对象,然后用交互模式的help()函数,就可以查出这个类有哪些函数或者是方法可以用了。

示例如下:

>>> lst = [1, 2, 3, 4]
>>> help(lst)