[英]__del__ on exit behavior
我有一些test.py文件:
class A:
def __init__(self):
print("A init")
def __del__(self):
print("A del")
a = A()
當我運行10次( python3 test.py
)時,它總是產生下一個輸出:
A init
A del
但是,如果我將sys.exit
調用添加到腳本結尾:
import sys
class A:
def __init__(self):
print("A init")
def __del__(self):
print("A del")
a = A()
sys.exit(-1)
在10個案例中有5個(隨機)
A init
在后半部分情況下:
A init
A del
我在Windows 7 x64上使用Python3.4.3 [MSC v.1600 32位]。 那么為什么不每次都調用__del__
方法呢? 我是否需要使用其他退出方法來傳遞腳本的返回碼,並確保所有析構函數都已執行? 還有一個相關的問題:是否可以在從OS接收SIGTERM或SIGKILL時執行析構函數?
從文檔中 :
不能保證為解釋器退出時仍然存在的對象調用
__del__()
方法。
如果要確保調用a.__del__
則必須顯式刪除該實例:
a = A()
del a # Assuming this is the final reference to the object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.