觸發時機:當乙個物件在記憶體中被銷毀的時候自動執行
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)
del a
del b
del c
# 3# 張三 被刪除,還剩下4個物件
# 李四 被刪除,還剩下5個物件
# 王五 被刪除,還剩下6個物件
可以讓類的例項具有類似於函式的行為
使用方式:
物件後面加括號,觸發執行。即:物件()或者 類()()
class a():
def __init__(self,num):
self.num=num
def __call__(self,n):
return self.num*n
a=a(7)
b=a(9) #把物件a當作函式用
print(b) #65
__repr__():改變物件的字元顯示
次方法是__str__()的備胎,如果找不到__str__()就會找__repr__()方法。
%r 預設呼叫的是__repr__()方法,如果是字串會預設加上『』
__repr__()方法預設呼叫的是__repr__()方法。
觸發時機:例項化時觸發
引數:至少乙個cls接收當前類
返回值:必須返回乙個物件例項
作用:例項化物件
注意:例項化物件是object類底層實現,其他類繼承了object的__new__才能實現例項化物件。
先觸發__new__,才會觸發__init__
class stu():
#例項化,實際是建立乙個新的物件
def __new__(cls, *args, **kwargs):
print('1111111111')
return object.__new__(cls) #用object類,去建立乙個此類的物件實體cls,代表是本類
def __init__(self,name,age):#初始化的時候觸發
print('12345')
self.name=name
self.age=age
zs=stu('張三',19)
print(zs.name)
#1111111111
#12345
#張三
php常用魔術方法
魔術方法和建構函式 construct和複製物件時自動呼叫的函式 clone相似,都是在執行某一操作時會被呼叫,通常和乙個關鍵字相連。通常情況下在類中會定義私有屬性,這是為了保護資料而使用的措施,但是也給我們帶來了麻煩。想要修改它們的值時,是通過呼叫我們定義的介面函式來完成的。每次需要修改變數都要呼...
python常用魔術方法
方法 描述 del 銷毀魔術方法,觸發時機 當乙個物件在記憶體中被銷毀的時候自動執行 call 可以讓類的例項具有類似於函式的行為,進一步模糊了函式和物件之間的概念。物件後面加括號,觸發執行。即 物件 或者 類 repr 改變物件的字串顯示 此方法是str 的備胎,如果找不到str 就會找repr ...
php常用魔術方法
1.call 當使用乙個未定義的方法時呼叫此方法 2.autoload 使用尚未被定義的類時自動呼叫。通過此函式,指令碼引擎在 php 出錯失敗前有了最後乙個機會載入所需的類加粗樣式 3.construct 當乙個物件被建立時呼叫此方法,好處是可以使構造方法有乙個獨一無二的名稱,無論它所在的類的名稱...