python常用魔術方法

2021-10-01 19:23:38 字數 3538 閱讀 5676

方法

描述_del_()

銷毀魔術方法,觸發時機:當乙個物件在記憶體中被銷毀的時候自動執行

_call()_

可以讓類的例項具有類似於函式的行為, 進一步模糊了函式和物件之間的概念。物件後面加括號,觸發執行。即:物件() 或者 類()()

_repr_()

改變物件的字串顯示 ­ 此方法是str()的備胎,如果找不到str()就會找repr()方法。

_new_()

例項化魔術方法 觸發時機: 在例項化對時觸發 引數:至少乙個cls 接收當前類 返回值:必須返回乙個物件例項 作用:例項化物件 注意:例項化物件是object類底層實現,其他類繼承了object的new才能夠實現 例項化物件。

_str_()

使用print(物件)或者str(物件)的時候觸發

_hash_()

hash演算法,是將乙個不定長的輸入,通過雜湊函 數變換成乙個定長的輸出,即雜湊值。

# __del__()

class

test

:def

__init__

(self)

:print

('程式執行'

)print

('你好'

)def

__del__

(self)

:#當程式執行完了執行del方法

print

('程式執行完了'

)s = test(

)print

('程式執行完了2'

)'''

程式執行

你好程式執行完了2

程式執行完了

'''# __call__()

class

sum:

defsum

(self)

: a =

0 i =

0while i <

101:

a = a + i

i +=

1print

(a)def

__call__

(self,

*args,

**kwargs)

: self.

sum(

)sum()(

)sum

= sum(

)sum()

'''5050

5050

'''# __repr__()

class

str:

def__init__

(self,name,age)

: self.name = name

self.age = age

# def __str__(self):

# return '__str__() 姓名:%s age: %s' % (self.name, self.age)

def__repr__

(self)

:return

'__repr__()姓名:%s age: %s'

%(self.name, self.age)

per = str(

'李明',18

)print

(per)

#__repr__()姓名:李明 age: 18,當str方法不存在,會找repr方法

#__new__()

class

dog:

def__new__

(cls,

*args,

**kwargs)

:print

('new'

)# 重寫

new =

object

.__new__(cls)

# 呼叫父類object的new方法才建立new物件

new.__init__(

) new.__del__(

)def

__init__

(self)

:print

('int'

)def

__del__

(self)

:print

('del'

)d = dog(

)'''

newint

deldel

'''class

num:

def__init__

(self,num)

: self.num = num

n1 = num(1)

n2 = num(2)

n3 = num(3)

lst =

[n1,n2,n3]

set1 =

set(lst)

print

(set1)

hash()函式預設呼叫object類的hash()方法。hash值是物件的id值/16。

方法描述

issubclass()

檢測乙個類是否是另外乙個類的子類 ,返回值布林型別,格式issubclass(被檢測類, 父類) ,或者issubclass(被檢測類, (父類1,父類2, 父類3…))

isinstance()

檢測乙個物件是否是某個類的物件 ,返回值時布林,issubclass(物件, 類),issubclass(物件, (類1,類2,類3)),只要乙個類是當前物件物件的類,那麼最終結果是true

方法描述

hasattr()

判斷是否有此變數,返回bool 值 ,hasattr(物件/類,『成員名』)

getattr()

獲取屬性值或者獲取方法變數的位址 ,getattr(物件,『屬性名』[,成員不存在時的預設值]), 返回成員的值

setattr()

給類或者物件設定屬性或者方法 (少),setattr(物件,『成員名』,值)

delattr()

刪除類或者物件的屬性或方法 (少),delattr(物件,成員)

class

teacher

: name =

'斯密斯'

def__init__

(self,name,age)

: self.name = name

self.age = age

t = teacher(

'haha',25

)print

(hasattr

(t,'name'))

#判斷是否有此變數

print

(getattr

(t,'name'))

# 獲取變數值

setattr

(t,'adress'

,'陝西'

)#新增

print

(t.adress)

delattr

(t,'adress'

)# 移除 'adress'

# print(t.adress)

true

haha

陝西

常用魔術方法

觸發時機 當乙個物件在記憶體中被銷毀的時候自動執行 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 張三...

python 魔術方法

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

Python魔術方法

參考文章 python 魔術方法指南 魔術方法,顧名思義是一種可以給物件 類 增加魔法的特殊方法,它們的表示方法一般是用雙下劃線包圍 如 init from os.path import join class fileobject 給檔案物件進行包裝從而確認在刪除時檔案流關閉 def init se...