Обязательно ли использовать метод __del__ во всех пользовательских классах, команда del - деструктор
Обязательно ли использовать __del__
метод во всех пользовательских классов? Является ли команда del деструктором?
2 ответа
Нет, del
просто удаляет имя. Если объект, на который ссылается это имя, имеет другие ссылки, он будет продолжать существовать. __del__
метод не гарантированно вызывается, даже если нет ссылок на объект.
Если вам нужна предсказуемая продолжительность жизни объекта и возможность убирать за собой, используйте менеджер контекста и with
заявление.
Нет и нет
Хорошее описание в документах
Вы действительно никогда не должны беспокоиться о __del__
, но это деструктор и будет вызван сборщиком мусора.
del
не деструктор, он просто удаляет ссылку. Когда все ссылки ушли, сборщик мусора может в конечном итоге вызвать __del__
,