類可以過載python的操作符
操作符過載使我們的物件與內建的一樣。__x__的名字的方法是特殊的掛鉤(hook),python通過這種特殊的命名來攔截操作符,以實現過載。 python在計算操作符時會自動呼叫這樣的方法,例如:
如果物件繼承了__add__方法,當它出現在+表示式中時會呼叫這個方法。通過過載,使用者定義的物件就像內建的一樣。
在類中過載操作符
1、操作符過載使得類能攔截標準的python操作。
2、類可以過載所有的python的表示式操作符。
3、類可以過載物件操作:print,函式呼叫,限定等。
4、過載使得類的例項看起來更像內建的。
5、過載是通過特殊命名的類方法來實現的。
方法名 過載的操作說明 呼叫表示式
__init__ 建構函式 建立物件:class()
www.cppcns.com__del__ 析構函式 釋放物件的時候
__add__ &nb程式設計客棧sp; 「+」 x + y
__or__ 「|」 x | y
__repr__ 列印,轉換 print x, `x`
__call__ 函式呼叫 x()
__getattr__ 屬性引用 x.undefined
__getitem__ 索引 x[key],for迴圈,in測試
__setitem__ 索引賦值 x[key] = value
__getslice__ 分片 x[low:high]
__len__ 長度 len(x)
__cmp__ 比較 &www.cppcns.comnbsp; 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[i] #x[i]將呼叫__getitem__(x,i)01
4916
Python中的操作符過載
運算子過載是指在方法中攔截內建的操作 當類的例項出現在內建操作中,python會自動呼叫自定義的辦法,並且返回自定義方法的操作結果。類可以過載python的操作符 操作符過載使我們的物件與內建的一樣。x 的名字的方法是特殊的掛鉤 hook python通過這 種特殊的命名來攔截操作符,以實現過載。p...
python中的操作符過載示例
最近在做乙個許可權系統,期望的效果如下 許可權部分是乙個二級結構,contenttype.action 假定對外暴露的介面為 perms 變數,期望能通過 if perms.contentname 來判斷使用者是否擁有contentname中的任一action的許可權,通過 if perms.con...
操作符過載
ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...