class Test(object):
def __init__(self, name):
self.name = name
print('這是構造函數')
def say_hi(self):
print('hell, %s' % self.name)
def __del__(self):
print('這是析構函數')
obj = Test('bigberg')
obj.say_hi()
del obj
#輸出
這是構造函數
hello bigberg
這是析構函數
構造函數
用於初始化類的內容部狀態,Python提供的構造函數式 __init__(),也就是當該類被實例化的時候就會執行該函數,__init__()方法是可選的,如果不提供,Python 會給出默認的__init__方法。
析構函數
“__del__”就是一個析構函數了,當使用del 刪除對象時,會調用他本身的析構函數,另外當對象在某個作用域中調用完畢,在跳出其作用域的同時析構函數也會被調用一次,這樣可以用來釋放內存空間。
__del__()也是可選的,如果不提供,則Python 會在后台提供默認析構函數
如果要顯式的調用析構函數,可以使用del關鍵字: del obj
垃圾回收機制
s = '123'
print('del...running')
del s
當我們用del刪除一個對象時,其實並沒有直接清除該對象的內存空間。Python 采用‘引用計數’ 的算法方式來處理回收,即:當某個對象在其作用域內不再被其他對象引用的時候,Python 就自動清除對象。
而析構函數 __del__()在引用的時候就會自動清除被刪除對象的內存空間。
