在Python中is、==是两个运算符,对对象进行比较,分别对ID,TYPE,Value进行比较。
"is"比较ID,TYPE,Value三维,而"=="仅比较value。
实验发现其实is,==仅仅是比较一些简单的基础变量。
class Test(object):
def __init__(self):
self.value='test'
测试代码:
if __name__ == '__main__':
u1=Test()
u2=Test()
if u1 is u2:
print 'is',True
else:
print 'is',False
if u1 == u2:
print '==',True
else:
print '==',False
结果如下:step 2:重载“==”运算符:
def __eq__(self,y):
if self.value ==y.value:
return True
else:
return False
测试结果如下:小结:Python中可以重载的运算符如下:
Method Overloads Call for
__init__ 构造函数 X=Class()
__del__ 析构函数 对象销毁
__add__ + X+Y,X+=Y
__or__ | X|Y,X|=Y
__repr__ 打印转换 print X,repr(X)
__str__ 打印转换 print X,str(X)
__call__ 调用函数 X()
__getattr_ 限制 X.undefine
__setattr__ 取值 X.any=value
__getitem__ 索引 X[key],
__len__ 长度 len(X)
__cmp__ 比较 X==Y,X<Y
__lt__ 小于 X<Y
__eq__ 等于 X=Y
__radd__ Right-Side + +X
__iadd__ += X+=Y
__iter__ 迭代 For In