Встречается на собеседованиях • сегодня

Какие знаешь способы создания контекстного менеджера

В Python есть два основных способа создания контекстного менеджера:

  1. Использование класса с методами __enter__ и __exit__:
python
class MyContextManager:
    def __enter__(self):
        print("Entering context")
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Exiting context")
        if exc_type:  # Обработка исключений
            print(f"Exception occurred: {exc_val}")
        return True  # Подавляем исключение
  1. Использование contextlib.contextmanager декоратора (более питонический способ):
python
from contextlib import contextmanager

@contextmanager
def my_context_manager():
    print("Entering context")
    try:
        yield "resource"
    finally:
        print("Exiting context")

Оба способа позволяют использовать менеджер через конструкцию with:

python
with MyContextManager() as cm:
    # do something

with my_context_manager() as res:
    # do something

Классовый подход дает больше контроля, особенно при обработке исключений. Декораторный вариант проще и компактнее для простых случаев.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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