Python ==運算子過載
阿新 • • 發佈:2019-01-29
在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中可以過載的運算子如下:
MethodOverloadsCall 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