运算符重载的限制 [Python]
时间:2008-09-29 来源:lvDbing
大多数Python运算符和增量赋值都能重载,如下:
可以重载的常见运算符和增量赋值语句
不能通过重载来改变运算符的优先级。但是,可在表达式中使用圆括号强制重载运算符的求值顺序。不可通过重载来改变一个运算符的顺序关联性。
不能改变运算符取得操作数的个数。重载的一元运算符仍然是一元运算符,重载的二元运算符仍然是二元运算符。运算符+和-都有一元和二元的版本;这些一元和二元版本可单独重载(使用不同的方法名)。注意,不能创建新的运算符,只能对现有的运算符进行重载。
运算符对内建类型的对象的操作方式不能通过运算符重载加以改变。例如,不能改变运算符+用于对两个整数进行相加的含义。运算符重载只适用于用户自定义类的对象,或者用户自定义类的对象与内建类型的对象的混合形式。
如果重载一元算术运算符(例如+,-和*),会自动重载与运算符对应的增量赋值语句。举个例子来说,如果重载一个加法运算符,从而允许以下形式的语句:
object2 = object2 + object1
那就表示+=增量赋值语句也会重载,从而允许以下形式的语句:
object2 += object1
在这个例子中,尽管程序员不必定义一个方法来重载+=赋值语句,但通过为那个类显式地定义方法,也可实现同样的行为。
+ | - | * | ** | / | // | % | << |
>> | & | | | ^ | ~ | < | > | <= |
>= | == | != | += | -= | *= | **= | /= |
//= | %= | <<= | >>= | &= | ^= | |= | [] |
() | . | `` | in |
相关阅读 更多 +