Python 还有很多种魔法方法,允许一些习惯行为被定义成增量运算。你很可能已经熟悉了增量运算,增量运算是算术运算和赋值运算的结合。如果你还不知道我在说什么,就看一下下面的例子:
x = 5x += 1 # in other words x = x + 1每一个方法的返回值都会被赋给左边的变量。(比如,对于a += b, __iadd__ 可能会返回a + b, a + b会赋给变量a。) 下面是清单:
__iadd__(self, other)
加法赋值
__isub__(self, other)
减法赋值.
__imul__(self, other)
乘法赋值
__ifloordiv__(self, other)
整除赋值,地板除,相当于 //= 运算符.
__idiv__(self, other)
除法赋值,相当于 /= 运算符.
__itruediv__(self, other)
真除赋值,注意只有你 whenfrom __future__ import divisionis,才有效.
__imod_(self, other)
模赋值,相当于 %= 运算符.
__ipow__
乘方赋值,相当于 **= 运算符.
__ilshift__(self, other)
左移赋值,相当于 <<= 运算符.
__irshift__(self, other)
左移赋值,相当于 >>= 运算符.
__iand__(self, other)
与赋值,相当于 &= 运算符.
__ior__(self, other)
或赋值,相当于 |= 运算符.
__ixor__(self, other)
异或运算符,相当于 ^= 运算符.
类型转换魔法Python 同样有一系列的魔法方法旨在实现内置类型的转换,比如float() 函数。它们是:
__int__(self)
转换成整型.
__long__(self)
转换成长整型.
__float__(self)
转换成浮点型.
__complex__(self)
转换成 复数型.
__oct__(self)
转换成八进制.
__hex__(self)
转换成十六进制.
__index__(self)
当对象被切片时转换成int型。如果你定义了一个可能被用来做切片操作的数值型,你就应该定义__index__.
__trunc__(self)
当 math.trunc(self) 使用时被调用.__trunc__返回自身类型的整型截取 (通常是一个长整型).
__coerce__(self, other)
执行混合类型的运算,如果转换不能完成,应该返回None;否则,要返回一对两个元数的元组self和other, 被操作成同类型。