python操作符重载特殊方法列表
如下表,python类只要实现了右边所示特殊名称的方法,就实现了操作符重载,可使用左边的操作符语法:
| Common Syntax | Special Method Form |
|---|---|
| a + b | a._add_(b); alternatively b._radd_(a) |
| a − b | a._sub_(b); alternatively b._rsub_(a) |
| a b | a._mul_(b); alternatively b._rmul_(a) |
| a / b | a._truediv_(b); alternatively b._rtruediv_(a) |
| a // b | a._floordiv_(b); alternatively b._rfloordiv_(a) |
| a % b | a._mod_(b); alternatively b._rmod_(a) |
| a b | a._pow_(b); alternatively b._rpow_(a) |
| a « b | a._lshift_(b); alternatively b._rlshift_(a) |
| a » b | a._rshift_(b); alternatively b._rrshift_(a) |
| a & b | a._and_(b); alternatively b._rand_(a) |
| a ˆ b | a._xor_(b); alternatively b._rxor_(a) |
| a | b | a._or_(b); alternatively b._ror_(a) |
| a += b | a._iadd_(b) |
| a −= b | a._isub_(b) |
| a = b | a._imul_(b) |
| … … | |
| +a | a._pos_() |
| −a | a._neg_() |
| ˜a | a._invert_() |
| abs(a) | a._abs_() |
| a < b | a._lt_(b) |
| a <= b | a._le_(b) |
| a > b | a._gt_(b) |
| a >= b | a._ge_(b) |
| a == b | a._eq_(b) |
| a != b | a._ne_(b) |
| v in a | a._contains_(v) |
| a[k] | a._getitem_(k) |
| a[k] = v | a._setitem_(k,v) |
| del a[k] | a._delitem_(k) |
| a(arg1, arg2, …) | a._call_(arg1, arg2, …) |
| len(a) | a._len_() |
| hash(a) | a._hash_() |
| iter(a) | a._iter_() |
| next(a) | a._next_() |
| bool(a) | a._bool_() |
| float(a) | a._float_() |
| int(a) | a._int_() |
| repr(a) | a._repr_() |
| reversed(a) | a._reversed_() |
| str(a) | a._str_() |