Python 3.8: данные объекта класса все еще существуют после использования del - PullRequest
0 голосов
/ 17 января 2020

У меня есть класс, который делает некоторые вещи; class IdoStuff:.

В al oop создается объект класса IdoStuff, он выполняет некоторые действия и удаляется:

for i in range(0,50):
   obj = IdoStuff()     # initialize object
   obj.doStuff()        # does something
   obj.doMoreStuff()    # does another thing
   del obj

Все работает так, как нужно для первой итерации, но на Во второй итерации я вижу, что с помощью моего отладчика после создания второго объекта переменные / данные первого объекта все еще там.

Что происходит? Я думал, что удалил его с del obj. Я хочу создать новый объект с каждой итерацией.

1 Ответ

0 голосов
/ 17 января 2020

Попробуйте отредактировать ваш код следующим образом:

for i in range(0,50):
   obj = IdoStuff()     # initialize object
   try:
     print(obj.my_check_attrib)
   except Exception:
     print('failed to access obj.my_check_attrib')
   obj.my_check_attrib = 123
   obj.doStuff()        # does something
   obj.doMoreStuff()    # does another thing
   del obj

Если действительно есть какая-либо фактическая утечка, вы должны увидеть только один раз текст ошибки, а значение атрибута 49 раз, если нет утечки, тогда только текст ошибки будет отображаться в вашей консоли 50 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...