算术运算符
__add__(self, value, /) 定义加法的行为:+
__sub__(self, value, /) 定义减法的行为:-
__mul__(self, value, /) 定义乘法的行为:*
__truediv__(self, value, /) 定义真除法的行为:/
__floordiv__(self, value, /) 定义整除法的行为://
__mod__(self, value, /) 定义取模运算的行为:%
__divmod__(self, value, /) 定义当被divmod调用时的行为:divmod(self, value)
__pow__(self, value, mod=None, /) 定义幂运算的行为:** 或当被pow调用时的行为:pow(self, value, mod)
__lshift__(self, value, /) 定义按位左移操作的行为:<<
__rshift__(self, value, /) 定义按位右移操作的行为:>>
__and__(self, value, /) 定义按位与操作的行为:&
__or__(self, value, /) 定义按位或操作的行为:|
__xor__(self, value, /) 定义按位异或操作的行为:^
>> > class Complex :
def __init__ ( self, x= 0 , y= 0 ) :
self. x = x
self. y = y
def __add__ ( self, value) :
x = self. x + value. x
y = self. y + value. y
return Complex( x, y)
def show ( self) :
if self. y> 0 :
print ( '%d+%di' % ( self. x, self. y) )
elif self. y== 0 :
print ( '%d' % self. x)
else :
print ( '%d%di' % ( self. x, self. y) )
>> > a = Complex( )
>> > b = Complex( 1 )
>> > c = Complex( 2 , 3 )
>> > d = Complex( - 2 , - 5 )
>> > f = a + b
>> > f. show( )
1
>> > f = a + c
>> > f. show( )
3 + 3i
>> > d. show( )
- 2 - 5i
反运算
__radd__(self, value, /) 当左操作数不支持相应运算时被调用
__rsub__(self, value, /) 当左操作数不支持相应运算时被调用
__rmul__(self, value, /) 当左操作数不支持相应运算时被调用
__rtruediv__(self, value, /) 当左操作数不支持相应运算时被调用
__rfloordiv__(self, value, /) 当左操作数不支持相应运算时被调用
__rmod__(self, value, /) 当左操作数不支持相应运算时被调用
__rdivmod__(self, value, /) 当左操作数不支持相应运算时被调用
__rpow__(self, value, mod=None, /) 当左操作数不支持相应运算时被调用
__rlshift__(self, value, /) 当左操作数不支持相应运算时被调用
__rrshift__(self, value, /) 当左操作数不支持相应运算时被调用
__rand__(self, value, /) 当左操作数不支持相应运算时被调用
__ror__(self, value, /) 当左操作数不支持相应运算时被调用
__rxor__(self, value, /) 当左操作数不支持相应运算时被调用
>> > class int ( int ) :
def __radd__ ( self, value) :
return int . __sub__( self, value)
>> > a = int ( 2 )
>> > b = int ( 3 )
>> > a + b
5
>> > 2 + b
1
增量赋值运算
__iadd__(self, value, /) 定义赋值加法的行为:+=
__isub__(self, value, /) 定义赋值减法的行为:-=
__imul__(self, value, /) 定义乘法的行为:*=
__itruediv__(self, value, /) 定义真除法的行为:/=
__ifloordiv__(self, value, /) 定义整除法的行为://=
__imod__(self, value, /) 定义取模运算的行为:%=
__ipow__(self, value, mod=None, /) 定义赋值幂运算的行为:**=
__ilshift__(self, value, /) 定义赋值按位左移操作的行为:<<=
__irshift__(self, value, /) 定义赋值按位右移操作的行为:>>=
__iand__(self, value, /) 定义赋值按位与操作的行为:&=
__ior__(self, value, /) 定义赋值按位或操作的行为:|=
__ixor__(self, value, /) 定义赋值按位异或操作的行为:^=
一元操作符
__neg__(self, /) 定义正号的行为:+X
__pos__(self, /) 定义负号的行为:-X
__abs__(self, /) 定义当被abs()调用时的行为
__invert__(self, /) 定义按位求反的行为:~X
类型转换
__complex(self, /) 定义当被 complex() 调用时的行为(需要返回恰当的值)
__int__(self, /) 定义当被 int() 调用时的行为(需要返回恰当的值)
__float__(self, /) 定义当被 float() 调用时的行为(需要返回恰当的值)
__round__(self[, n]) 定义当被 round() 调用时的行为(需要返回恰当的值)
__index__(self, /) 1. 当对象是被应用在切片表达式中时,实现整形强制转换
2. 如果你定义了一个可能在切片时用到的定制的数值型,你应该定义 __index__
3. 如果 __index__ 被定义,则 __int__ 也需要被定义,且返回相同的值
比较运算符
__lt__(self, other, /) 定义小于号的行为:x < y 调用 x.__lt__(y)
__le__(self, other, /) 定义小于等于号的行为:x <= y 调用 x.__le__(y)
__eq__(self, other, /) 定义等于号的行为:x == y 调用 x.__eq__(y)
__ne__(self, other, /) 定义不等号的行为:x != y 调用 x.__ne__(y)
__gt__(self, other, /) 定义大于号的行为:x > y 调用 x.__gt__(y)
__ge__(self, other, /) 定义大于等于号的行为:x >= y 调用 x.__ge__(y)