Python中的魔術方法

2022-08-19 13:18:10 字數 1354 閱讀 1499

魔術方法就是乙個類/物件中的方法,和普通方法唯一的不同時,普通方法需要呼叫!而魔術方法是在特定時刻自動觸發。

這裡列舉出幾個常用的魔術方法:

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...