Встречается на собеседованиях • сегодня
В чем разница между контекстным менеджером и деструктором в Python
Контекстный менеджер (with statement) управляет ресурсами, гарантируя их освобождение после использования, даже при возникновении исключений. Реализуется через методы __enter__ и __exit__.
Деструктор (__del__) вызывается сборщиком мусора перед удалением объекта, но его вызов не гарантирован и зависит от реализации интерпретатора.
Пример контекстного менеджера:
python
class FileManager:
def __init__(self, filename):
self.filename = filename
def __enter__(self):
self.file = open(self.filename, 'r')
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
with FileManager('file.txt') as f:
content = f.read()Деструктор:
python
class TempFile:
def __del__(self):
print("Удаление временного файла")Контекстные менеджеры предпочтительнее для управления ресурсами, так как их поведение детерминировано.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы