Вы предпочли бы использовать 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