Встречается на 2% собеседований по Python
Как реализуется контекстный менеджер в Python
Контекстные менеджеры в Python позволяют управлять ресурсами (файлами, соединениями и т.д.) с гарантированным освобождением, даже при возникновении исключений. Реализуются через протокол with и методы __enter__ и __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()
if exc_type: # Обработка исключений
print(f"Error occurred: {exc_val}")
return True # Подавляем исключение
Использование
with FileManager('test.txt', 'w') as f:
f.write('Hello')
text
Также можно использовать `contextlib.contextmanager` для создания контекстного менеджера через генератор:
```python
from contextlib import contextmanager
@contextmanager
def file_manager(filename, mode):
try:
f = open(filename, mode)
yield f
finally:
f.close()Ключевые особенности:
__enter__выполняется при входе в блокwith__exit__вызывается при выходе, даже при исключении- Можно обрабатывать или подавлять исключения в
__exit__

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