425 字
2 分钟
Python中的重载
概述
重载,即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 | 索引赋值 |