python所有的魔術方法

2022-06-16 17:51:09 字數 3839 閱讀 4935

據說,python 的物件天生擁有一些神奇的方法,它們總被雙下劃線所包圍,他們是物件導向的 python 的一切。

他們是可以給你的類增加魔力的特殊方法,如果你的物件實現(過載)了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,你可以定義自己想要的行為,而這一切都是自動發生的。

python 的魔術方法非常強大,然而隨之而來的則是責任。了解正確的方法去使用非常重要!

c.__init__

(self[, arg1, ...]) 構造器(帶一些可選的引數)

c.__new__

(self[, arg1, ...]) 構造器(帶一些可選的引數)通常用在設定不變資料型別的子類。

c.__del__

(self) 析構器

c.__str__

(self) 可列印的字元輸出;內建str()及print 語句

c.__repr__

(self) 執行時的字串輸出 內建repr() 和『『 操作符

c.__unicode__

(self) unicode 字串輸出;內建unicode()

c.__call__(self, *args) 表示可呼叫的例項

c.__nonzero__(self) 為object 定義false 值 內建bool() (從2.2版開始)

c.__len__

(self) 「長度」(可用於類) 內建len()

c.__cmp__

(self, obj) 物件比較;內建cmp()

c.__lt__(self, obj) 小於/小於或等於 對應《及<=操作符

c.__gt__(self, obj) 大於/大於或等於 對應》及》=操作符

c.__eq__(self, obj) 等於/不等於 對應==,!=及<>操作符

c.__getattr__

(self, attr) 獲取屬性 內建getattr() 僅當屬性沒有找到時呼叫

c.__setattr__

(self, attr, val) 設定屬性

c.__delattr__

(self, attr) 刪除屬性

c.__getattribute__

(self, attr) a 獲取屬性;內建getattr() 總是被呼叫

c.__get__

(self, attr) a (描述符)獲取屬性

c.__set__

(self, attr, val) a (描述符)設定屬性

c.__delete__

(self, attr) a (描述符)刪除屬性

c.__*add__(self, obj) 加;+操作符

c.__*sub__(self, obj) 減;-操作符

c.__*mul__(self, obj) 乘;*操作符

c.__*div__(self, obj) 除;/操作符

c.__*truediv__(self, obj) e true 除;/操作符

c.__*floordiv__(self, obj) e floor 除;//操作符

c.__*mod__(self, obj) 取模/取餘;%操作符

c.__*divmod__(self, obj) 除和取模;內建divmod()

c.__*pow__(self, obj[, mod]) 乘冪;內建pow();**操作符

c.__*lshift__(self, obj) 左移位;

c.__*rshift__(self, obj) 右移;>>操作符

c.__*and__(self, obj) 按位與;&操作符

c.__*or__(self, obj) 按位或;|操作符

c.__*xor__(self, obj) 按位與或;^操作符

c.__neg__

(self) 一元負

c.__pos__

(self) 一元正

c.__abs__

(self) 絕對值;內建abs()

c.__invert__(self) 按位求反;~操作符

c.__complex__

(self, com) 轉為complex(複數);內建complex()

c.__int__

(self) 轉為int;內建int()

c.__long__

(self) 轉為long;內建long()

c.__float__

(self) 轉為float;內建float()

c.__oct__

(self) 八進位制表示;內建oct()

c.__hex__

(self) 十六進製制表示;內建hex()

c.__coerce__

(self, num) 壓縮成同樣的數值型別;內建coerce()

c.__index__

(self)g 在有必要時,壓縮可選的數值型別為整型(比如:用於切片

c.__len__

(self) 序列中項的數目

c.__getitem__

(self, ind) 得到單個序列元素

c.__setitem__

(self, ind,val) 設定單個序列元素

c.__delitem__

(self, ind) 刪除單個序列元素

c.__getslice__

(self, ind1,ind2) 得到序列片斷

c.__setslice__

(self, i1, i2,val) 設定序列片斷

c.__delslice__

(self, ind1,ind2) 刪除序列片斷

c.__contains__

(self, val) f 測試序列成員;內建in 關鍵字

c.__*add__(self,obj) 串連;+操作符

c.__*mul__(self,obj) 重複;*操作符

c.__iter__

(self) e 建立迭代類;內建iter()

c.__len__

c.__hash__

(self) 雜湊(hash)函式值

c.__getitem__

(self,key) 得到給定鍵(key)的值

c.__setitem__

(self,key,val) 設定給定鍵(key)的值

c.__delitem__

(self,key) 刪除給定鍵(key)的值

c.__missing__(self,key) 給定鍵如果不存在字典中,則提供乙個預設值

魔術方法 python python所有的魔術方法

據說,python 的物件天生擁有一些神奇的方法,它們總被雙下劃線所包圍,他們是物件導向的 python 的一切。他們是可以給你的類增加魔力的特殊方法,如果你的物件實現 過載 了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,你可以定義自己想要的行為,而這一切都是自動發生...

PHP 所有魔術方法

construct 構造方法,每次建立物件時都會呼叫。destruct 析構方法,該方法會在到某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。關於訪問不存在的屬性或物件 get 讀取不存在的屬性的值時,該方法會被呼叫。set 在給不存在的屬性賦值時,該方法會被呼叫。isset 當對不存在的屬性...

python 魔術方法

魔術方法 呼叫方式 解釋 new cls instance myclass arg1,arg2 new 在建立例項的時候被呼叫 init self instance myclass arg1,arg2 init 在建立例項的時候被呼叫 cmp self,other self other,self o...