魔術方法就是乙個類/物件中的方法,和普通方法唯一的不同時,普通方法需要呼叫!而魔術方法是在特定時刻自動觸發。
這裡列舉出幾個常用的魔術方法:
1.__init__
初始化魔術方法
觸發時機:初始化物件時觸發(不是例項化觸發,但是和例項化在乙個操作中)
引數:至少有乙個self,接收物件
返回值:無
作用:初始化物件的成員
注意:使用該方式初始化的成員都是直接寫入物件當中,類中無法具有
2.__new__
例項化魔術方法
觸發時機: 在例項化對時觸發
引數:至少乙個cls 接收當前類
返回值:必須返回乙個物件例項
作用:例項化物件
注意:例項化物件是object類底層實現,其他類繼承了object的__new__才能夠實現例項化物件。
沒事別碰這個魔術方法,先觸發__new__才會觸發__init__
3.__del__析構魔術方法
觸發時機:當物件沒有用(沒有任何變數引用)的時候被觸發
引數:乙個self 結婚搜物件
返回值:無
作用:使用完物件是**資源
注意:del不一定會觸發當前方法,只有當前物件沒有任何變數接收時才會觸發
4.__call__呼叫物件的魔術方法
觸發時機:將物件當作函式呼叫時觸發 物件()
引數:至少乙個self接收物件,其餘根據呼叫時引數決定
返回值:根據情況而定
作用:可以將複雜的步驟進行合併操作,減少呼叫的步驟,方便使用
注意:無
5.__len__觸發時機:使用len(物件) 的時候觸發
引數:乙個引數self
返回值:必須是乙個整型
作用:可以設定為檢測物件成員個數,但是也可以進行其他任意操作
注意:返回值必須必須是整數,否則語法報錯,另外該要求是格式要求。
6.__str__觸發時機:使用print(物件)或者str(物件)的時候觸發
引數:乙個self接收物件
返回值:必須是字串型別
作用:print(物件時)進行操作,得到字串,通常用於快捷操作
注意:無
7.__repr__觸發時機:在使用repr(物件)的時候觸發
引數:乙個self接收物件
返回值:必須是字串
python中的魔術方法
單例模式 class car def new cls,args,kwargs if not hasattr car,inst 如果car裡沒有inst屬性 car.inst object.new cls 建立乙個car物件給inst return car.inst 返回inst的屬性 def ini...
python中的常見魔術方法
class a num 0 def init self,name a.num 1 self.name name def del self a.num 1 print self.name,被刪除,還剩下 個物件 format a.num a a 張三 b a 李四 c a 王五 print a.num...
python 魔術方法
魔術方法 呼叫方式 解釋 new cls instance myclass arg1,arg2 new 在建立例項的時候被呼叫 init self instance myclass arg1,arg2 init 在建立例項的時候被呼叫 cmp self,other self other,self o...