簡體   English   中英

__del__退出行為

[英]__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM