1. 程式人生 > >Python ==運算子過載

Python ==運算子過載

Pythonis、==是兩個運算子,對物件進行比較,分別對IDTYPEValue進行比較。

"is"比較IDTYPEValue三維,而"=="僅比較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 Xrepr(X)

__str__列印轉換   print Xstr(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