Вы предпочли бы использовать del или переназначить None (сбор мусора)

Рассмотрим следующий код:

if value and self.fps_display is None:
    self.fps_display = clock.ClockDisplay()
elif not value and self.fps_display is not None:
    self.fps_display.unschedule()
    # Do this
    del self.fps_display
    # or this
    self.fps_display = None
    # or leave both in ?

Чем лучше очистка python?

Ответы

Ответ 1

Нет никакой разницы для сбора мусора - в обоих случаях будет выпущена ссылка на объект, на который указывает self.fps_display. Какой из них следует использовать, зависит от того, хотите ли вы, чтобы имя все еще существовало (хотя теперь оно указывает на другой объект, None), или нет.

Ответ 2

У вас есть объект с атрибутом fps_display.

Вы не должны делать атрибут странно необязательным или иногда отсутствующим.

Если это первоклассный атрибут - и достаточно видимый - он должен быть установлен в None для освобождения любых ресурсов. Удаление атрибута является жутким, потому что объект теперь имеет необязательные атрибуты и вызывает удивительные исключения.

self.fps_display = None