Курс 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. Разделение строки с помощью split()
  2. CLI-инструмент howdoi
  3. Установка random seed в Python
  4. Транспонирование матрицы в Python
  5. Глубокое копирование объектов
  6. Переворот списка в Python
  7. Хранение данных
  8. Асинхронное выполнение задач в процессах
  9. Поиск самого частого элемента
  10. Списки в Python: синтаксис представления
  11. Метод rpow в Python
  12. Тайное преобразование типа ключа
  13. Модуль subprocess: запуск внешних команд
  14. Генераторы в Python
  15. Оператор деления для класса Rational
  16. Создание циклической ссылки
  17. Поиск наиболее частого элемента в списке
  18. Взаимодействие с внешними процессами в Python
  19. Обновление и получение данных в SQLite
  20. Инициализация объекта
  21. Функция all() в Python
  22. TON Smart Challenge #2: участие и подготовка
  23. Операции со строками в Python
  24. Философия Python
  25. Создание итератора
  26. Функция enumerate() в Python
  27. Модуль future Python
  28. Модуль functools в Python
  29. Итераторы в Python
  30. discard() — удаление элемента из множества
  31. Удаление знаков препинания в Python
  32. Определение объема памяти объекта
  33. Модуль math: константы π и e
  34. Concrete Paths — метод .with_suffix()
  35. Оптимизация памяти с помощью __slots__
  36. Асинхронное программирование с asyncio
  37. Обновление множества в Python
  38. Печать месячного календаря
  39. Библиотека itertools: объединение списков
  40. Очистка входных данных
  41. Инвертирование словаря
  42. Скачать видео с YouTube
  43. Numpy: использование Ellipsis
  44. Удаление символа из строки
  45. Работа с комплексными числами
  46. Анонимные функции в Python
  47. Метод rrshift для пользовательских объектов
  48. Combobox в Tkinter
  49. Работа с библиотекой requests
  50. Работа с аргументами командной строки

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