名词解释: rhs(right hand side)
1.算术运算符重载
左侧为自定义类型时,右侧为内建类型进行算术运算
方法名 | 表达式 | 描述 |
---|
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 | 幂运算 |
2.反向运算符
左侧为内建类型时,右侧为自定义类型进行算术运算
方法名 | 表达式 | 描述 |
---|
radd(self,lhs) | lhs + self | 加法 |
rsub(self,lhs) | lhs - self | 减法 |
rmul(self,lhs) | lhs * self | 乘法 |
rtruediv(self,lhs) | lhs / self | 除法 |
rfloordiv(self,lhs) | lhs // self | 地板除 |
rmod(self,lhs) | lhs % self | 取模(求余) |
rpow(self,lhs) | lhs ** self | 幂运算 |
3.复合赋值运算符
以复合赋值算术运算符 x += y为例,此运算符会优先调用x.__iadd__(y)方法,如果没有__iadd__方法时,则会将复合赋值算术运 算拆解为:x = x + y
然后调用x = x.__add__(y)方法,如果再不存在__add__方法则会触发TypeError类型的错误异常
方法名 | 表达式 | 描述 |
---|
iadd(self,rhs) | self += rh | 加法 |
isub(self,rhs) | self -= rh | 减法 |
imul(self,rhs) | self *= rh | 乘法 |
itruediv(self,rhs) | self /= rh | 除法 |
ifloordiv(self,rhs) | self //=rh | 地板除 |
imod(self,rhs) | self %= rh | 取模(求余) |
ipow(self,rhs) | self **=rh | 幂运算 |
4.比较运算符重载
方法名 | 表达式 | 描述 |
---|
lt(self,rhs) | self < rhs | 小于 |
le(self,rhs) | self <= rhs | 小于等于 |
gt(self,rhs) | self > rhs | 大于 |
ge(self,rhs) | self >= rhs | 大于等于 |
eq(self,rhs) | self == rhs | 等于 |
ne(self,rhs) | self != rhs | 不等于 |
5.位运算符
方法名 | 表达式 | 描述 |
---|
and(self,rhs) | self & rhs | 位与 |
or(self,rhs) | self | rhs |
xor(self,rhs) | self ^ rhs | 位异或 |
lshift(self,rhs) | self <<rhs | 左移 |
rshift(self,rhs) | self >>rhs | 右移 |
6.反向位运算符
方法名 | 表达式 | 描述 |
---|
and(self,lhs) | lhs & rhs | 位与 |
or(self,lhs) | lhs | rhs |
xor(self,lhs) | lhs ^ rhs | 位异或 |
lshift(self,lhs) | lhs <<rhs | 左移 |
rshift(self,lhs) | lhs >>rhs | 右移 |
7.一元运算符
方法名 | 表达式 | 描述 |
---|
neg(self) | - self | 负号 |
pos(self) | + self | 正号 |
invert(self) | ~ self | 取反 |
8.in/not in 运算符
方法名 | 表达式 | 描述 |
---|
contains | in / not in | |
9.索引和切片运算符
方法名 | 表达式 | 描述 |
---|
getitem(self,i) | x = self(i) | 索引/切片取值 |
setitem(self,i,v) | self[i] = v | 索引/切片赋值 |
delitem(self,i) | del self[i] | del语句删除索引/切片 |
参考:
https://blog.csdn.net/zhangshuaijun123/article/details/82149056