Python Glossary English

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Сообщить о неточности