Курс Python → Контекстный менеджер в Python

Для работы с объектами, которые поддерживают оператор with в Python, можно использовать протокол контекстного менеджера. Оператор with позволяет автоматически управлять ресурсами, такими как файлы или сетевые соединения, и гарантировать их корректное закрытие после завершения работы. При использовании оператора with не нужно явно вызывать методы открытия и закрытия файла, это делается автоматически.

Для создания собственного контекстного менеджера нужно реализовать два специальных метода: __enter__ и __exit__. Метод __enter__ выполняется при входе в блок with и возвращает объект, который будет связан с переменной после ключевого слова as. Метод __exit__ вызывается при выходе из блока with и позволяет выполнить необходимые действия по завершении работы с ресурсом.


class MyContextManager:
    def __enter__(self):
        # выполнить действия при входе в блок with
        return self
    
    def __exit__(self, exc_type, exc_value, traceback):
        # выполнить действия при выходе из блока with

После создания класса контекстного менеджера можно использовать его с помощью оператора with, указав созданный объект в качестве аргумента. Например:


with MyContextManager() as cm:
    # выполнить действия внутри блока with

Таким образом, использование объектов, поддерживающих оператор with, позволяет упростить работу с ресурсами и обеспечить их корректное управление. Создание собственных контекстных менеджеров с методами __enter__ и __exit__ позволяет реализовать удобный и безопасный способ работы с различными ресурсами в Python.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Установка и использование модуля Wikipedia
  2. Получение текущего времени в Python
  3. Итераторы с потерямиZIP
  4. Поиск анаграмм с Counter
  5. Декораторы в Python
  6. Работа с прокси в Python
  7. Объединение Python и Shell
  8. Создание таблиц в терминале с PrettyTable
  9. F-строки в Python
  10. Создание циклической ссылки
  11. Работа с timedelta
  12. Сортировка данных с лямбда-функциями
  13. Функции range() в Python
  14. Установка Python — Простое руководство
  15. Вывод сложных структур данных с помощью pprint
  16. Объединение словарей в Python
  17. Экспорт внешнего файла с помощью writefile
  18. Именованные срезы в Python
  19. Замена текста с re.sub()
  20. Преобразование чисел в слова
  21. Операция += для списков
  22. Декораторы в Python
  23. Множественные конструкторы в Python
  24. Закрытие файла в Python
  25. Работа с Enum в Python3.
  26. Представление бесконечности в Python
  27. Операции с кортежами
  28. Работа со слайсами
  29. Закрытие файла в Python
  30. Замеры производительности в Python
  31. Форматирование чисел в Python
  32. Python: цикл for и оператор присваивания
  33. Вложенные функции в Python
  34. Применение функции к каждому элементу списка
  35. Метод title() в Python
  36. Метод join() для объединения элементов
  37. Работа с OpenCV
  38. Python Метод del.
  39. Генераторы в Python
  40. Управление виртуальными окружениями в Python
  41. Сравнение строк в Python
  42. Перегрузка операторов в Python
  43. Использование type hints
  44. Распаковка значений в Python
  45. Измерение времени выполнения кода
  46. Метод rmatmul для обратного матричного умножения

Marketello читают маркетологи из крутых компаний