Найти в Дзене
programmer's notes (python and more)

Приложение к подборке "ООП в Python". Контекстный менеджер

Доброго времени суток, читатели, зрители моего канала programmer's notes.

ООП в Python | programmer's notes | Дзен
programmer's notes

Статья относится к подборке об ООП в Python.

Контекстный менеджер

Контекстный менеджер одна из технологий, реализуемая посредством объектно-ориентированных средств Python. А поскольку это технология реализована в разных библиотеках Python и мы её будем использовать, есть смысл кратко изложить то, как работает и как создается класс контекстного менеджера.

Контекст, это что? Его используют обычно в лингвистике. Это некое окружение, например фразы, по которому мы определяем её смысл. Что касается программирования, то можно сказать, что это нечто обязательное, к некоторой последовательности программных действий, что делает их выполнение правильным. Типичный пример это файлы, о которых мы будем говорить в другой подборке нашего канала. Для того, чтобы читать из файла, писать туда, он предварительно должен быть открыт, а потом, разумеется закрыт. Вот контекст, который придаёт смысл действий над файлом и есть открытие файла, а потом его закрытие.

А сегодня я просто хотел показать, как самим организовать такой менеджер контекста.

Контекстный менеджер это обычный класс, который имеет кроме всего прочего два "магических" метода __enter__() и __exit__(). Обратимся к следующей программе.

Текст программы ниже
Текст программы ниже
primer40.py

Результат выполнения программы

Вход в контекст
Результат 100
Выполняем какие-то действия
Выход из контекста

Оператор

with Cmng(10) as rs

создает объект класса Cmng. При этом в начале выполняется конструктор __init__(). Далее выполняется содержимое __enter__(). Возвращаемое этим методом значение передается переменной rs. Если для нашей задачи переменная типа rs не нужно, то можно опустить 'as rs'. После этого выполняются строки внутри блока with. Когда выполнение их заканчивается, то выполняется метод __exit__().

Такие менеджеры реализованы во многих библиотеках. __enter__() используется для открытия ресурса, __exit__() для его закрытия. В подборке Стандартные библиотеки Python мы неоднократно встретимся с такими менеджерами. Впрочем, использовать их или нет — всё на ваше усмотрение.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Когда нибудь программисты не будут нужны экономике, но что может помешать нам получать удовольствие от программирования
Когда нибудь программисты не будут нужны экономике, но что может помешать нам получать удовольствие от программирования