zdc253212956 发表于 2015-4-25 06:02:51

Python中的操作符重载

类可以重载python的操作符
操作符重载使我们的对象与内置的一样。__X__的名字的方法是特殊的挂钩(hook),python通过这

种特殊的命名来拦截操作符,以实现重载。 python在计算操作符时会自动调用这样的方法,例如:

如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法。通过重载,用户定义的对

象就像内置的一样。

在类中重载操作符
1、操作符重载使得类能拦截标准的python操作。
2、类可以重载所有的python的表达式操作符。
3、类可以重载对象操作:print,函数调用,限定等。
4、重载使得类的实例看起来更像内置的。
5、重载是通过特殊命名的类方法来实现的。
方法名      重载的操作说明      调用表达式
__init__    构造函数      创建对象:class()
__del__      析构函数      释放对象的时候
__add__      “+”            x + y
__or__      “|”            x | y
__repr__    打印,转换      print x, `x`
__call__    函数调用      X()
__getattr__    属性引用      x.undefined
__getitem__    索引            x,for循环,in测试
__setitem__    索引赋值      x = value
__getslice__    分片            x
__len__      长度            len(x)
__cmp__      比较            x == Y ,x < y
__radd__    右边的操作符"+"      非实例 + x

例子:
__getitem__拦截了所有的索引操作
>>> class indexer:
def __getitem__(self,index):
return index ** 2
>>> x = indexer()
>>> for i in range(5):
print x    #x将调用__getitem__(x,i)
0
1
4
9
16
页: [1]
查看完整版本: Python中的操作符重载