Python 3.9+gcфункция
gc.is_finalized()
интроспекция
Проверяет, вызывал ли уже сборщик для объекта финализатор __del__. Нужна при отладке «воскрешённых» объектов.
Синтаксис
gc.is_finalized(obj)
Объект может пережить свой __del__, если тот сохранил self куда-то наружу, — это «воскрешение». Повторно __del__ для него уже не вызовется, и is_finalized это показывает. Для объектов без __del__ ответ False, даже после сборки: финализатора просто не было. В новом коде вместо __del__ лучше weakref.finalize — он вызывается ровно один раз и не воскрешает.
Примеры
import gc
saved = None
class Lazarus:
def __del__(self):
global saved
saved = self # воскрешение
obj = Lazarus()
print(gc.is_finalized(obj)) # → False
del obj
print(gc.is_finalized(saved)) # → True — __del__ второй раз не вызовут
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности