Встречается на 1% собеседований по Python
Как из класса сделать контекстный менеджер
В Python можно сделать класс контекстным менеджером, реализовав методы __enter__ и __exit__. Метод __enter__ выполняется при входе в контекст, а __exit__ - при выходе, даже если произошло исключение.
Пример:
python
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
text
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 is not None:
print(f"Ошибка: {exc_val}")
return True # Подавляем исключениеИспользование
with FileManager('test.txt', 'w') as f:
f.write('Hello World')
text
Ключевые моменты:
1. `__enter__` возвращает объект, который будет доступен после `as`
2. `__exit__` принимает параметры об исключении (если оно произошло)
3. Возврат `True` из `__exit__` подавляет исключение
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы