方法
描述_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...