425 字
2 分钟
Python中的重载
2020-01-29

概述#

重载,即overwrite

字符串函数重载#

repr与str#

repr函数用于print函数调用,str则用于str函数调用

def __repr__(self):
...
return some string here
def __str__(self):
...
return some string here

内建函数重载#

部分内建函数#

__abs__ __len__ __bool__

bool函数重载#

用于bool函数取值,或if、while等判断中

a. 当类内有__bool__(self)函数时,用此函数的返回值作为bool函数的返回值 b. 当不存在__bool__(self)函数时,用__len__(self)的返回值是否为0来作为bool函数的返回值 c. 也不存在__len__(self)函数时,直接返回True

运算符重载#

算术运算符重载#

函数表达式说明
__add__(self, rhs)self + rhs加法
__sub__(self, rhs)self - rhs减法
__mul__(self, rhs)self * rhs乘法
__truediv__(self, rhs)self / rhs除法
__floordiv__(self, rhs)self // rhs地板除法
__mod__(self, rhs)self % rhs求余
__pow__(self, rhs)self ** rhs求幂

反向算术运算符重载#

函数表达式说明
__radd__(self, lhs)lhs + self加法
__rsub__(self, lhs)lhs - self减法
__rmul__(self, lhs)lhs * self乘法

复合赋值算术运算符重载#

函数表达式说明
__iadd__(self, rhs)self += rhs自加
__isub__(self, rhs)self -= rhs自减
__imul__(self, rhs)self *= rhs自乘

a. 若add与iadd同时存在,则对于+=运算优先iadd b. 若iadd不存在,add存在,则+=运算使用add

比较运算符重载#

函数表达式说明
__lt__(self, num)self < num小于,less than
__le__(self, num)self <= num小于等于,less equal
__gt__(self, num)self > num大于,greater than
__ge__(self, num)self >= num大于等于
__eq__(self, num)self == num等于
__ne__(self, num)self != num不等

in运算符重载#

函数表达式说明
__contains__(self, v)v in self成员运算

索引及切片运算符重载#

函数表达式说明
__getitem__(self, i)self[i]索引取值
__setitem__(self, i, val)self[i] = val索引赋值
Python中的重载
https://blog.xiaobaizhang.top/posts/python-1-chongzai/
作者
张小白
发布于
2020-01-29
许可协议
CC BY-NC-SA 4.0