1. 程式人生 > >python的析構方法__del__

python的析構方法__del__

sans normal ima author ffffff 分享 image self 並不會


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File  : 析構方法del.py
# Author: HuXianyong
# Date  : 2018/7/9

class Foo:
    # 初始化方法
    # 創建完對象後會自動被調用
    def __init__(self, name):
        print('__init__方法被調用')
        self.name = name
    # 析構方法
    # 當對象被刪除時,會自動被調用,然後釋放內存
    def __del__(self):
        print("腳本運行結束,釋放內存")
# 創建對象
f1 = Foo("hxy")
# 刪除對象
del f1.name
# print(f1.name)
#del f1
print('這應該是腳本的最後一句!')


對象的__del__是對象在被gc消除回收的時候起作用的一個方法,它的執行一般也就意味著對象不能夠繼續引用

技術分享圖片


當我們刪除的是類的屬性的時候並不會去調用__del__方法,所以我們先print出來然後才回去調用__del__方法,

應為__del__方法只會在內存釋放的時候才回去調用到它

技術分享圖片



但是我們如果刪除的是f1這個類的實例的話就會立即釋放內存,del就會先於print被調用

技術分享圖片

python的析構方法__del__