Python 的 Magic Methods 指南(4)

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, 被操作成同类型。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/cb1b2f78dd9df2088d69413cabe7ac94.html