Встречается на 2% собеседований по Python

Как устроен контекстный менеджер

Контекстный менеджер в Python — это объект, который определяет методы __enter__() и __exit__(), позволяя управлять ресурсами в блоке with.

  • __enter__() выполняется при входе в блок with и возвращает объект для работы.
  • __exit__() вызывается при выходе (даже при исключении), освобождая ресурсы.

Пример:

python
class FileManager:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file.close()

with FileManager('test.txt', 'w') as f:
    f.write('Hello!')  # файл закроется автоматически

Также можно использовать contextlib.contextmanager для создания менеджера через генератор.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы