常用魔術方法

2021-09-25 18:22:27 字數 1436 閱讀 7295

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

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 當乙個物件被建立時呼叫此方法,好處是可以使構造方法有乙個獨一無二的名稱,無論它所在的類的名稱...