Курс Python → Управление контекстом выполнения
Для создания объектов, поддерживающих выражение with, необходимо реализовать протокол управления контекстом исполнения. Этот протокол состоит из двух методов: __enter__ и __exit__. Метод __enter__ выполняется при входе в блок with, а метод __exit__ — при выходе из него.
Пример создания класса, поддерживающего выражение with:
class FileLock:
def __init__(self, filename):
self.filename = filename
self.locked = False
def __enter__(self):
self.locked = True
print(f'Locking file {self.filename}')
# реализация блокировки файла
return self
def __exit__(self, exc_type, exc_value, traceback):
self.locked = False
print(f'Unlocking file {self.filename}')
# реализация разблокировки файла
Теперь можно использовать созданный класс FileLock с оператором with для блокировки и разблокировки файла:
with FileLock('example.txt') as lock:
# работа с файлом, который заблокирован
pass
При выполнении блока with метод __enter__ будет вызван, файл будет заблокирован, и после завершения блока __exit__ будет вызван для разблокировки файла. Это позволяет управлять ресурсами и контекстом исполнения кода более безопасно и удобно.
Таким образом, реализуя методы __enter__ и __exit__ в своем классе, можно создавать объекты, поддерживающие выражение with, для управления ресурсами и контекстом исполнения кода.
Другие уроки курса "Python"
- Работа с комплексными числами
- Работа с itertools
- Генератор данных в Keras
- Конкатенация строковых литералов
- Списки: объединение, изменение
- Переопределение метода __floordiv__
- Инверсия списка и строки в Python
- Метод ior для битовых операций
- Функции высшего порядка в Python
- Базовые объекты Python
- Особенности множеств в Python
- Генераторы словарей и множеств
- Выборка чисел
- Объединение списков в строку
- Вывод с переменной через запятую
- Проверка на истинность объектов в Python
- Освобождение памяти в Python
- Именованные кортежи в Python
- Работа с getopt
- Равенство и идентичность в Python
- Ключевое слово global в Python
- Форматирование даты с strftime()
- Функция reduce() из модуля functools
- Множественные конструкторы в Python
- Работа с путями в Python
- Работа с файлами в Python
- Контекстный менеджер в Python
- Транспонирование матрицы в Python
- Мониторинг работы программы Py-spy
- Объединение списков в Python
- Работа со словарями
- Генерация чисел с range()
- Атрибуты объекта в Python
- Отрицательные индексы списков
- Уникальные значения из списка
- Форматирование строк с f-строками
- Метод join() для объединения элементов строки
- Метод округления чисел
- Работа с OpenCV
- Docstring в Python
- Роль запятой в Python
- Удаление URL-адресов в Python
- Хэш-функции в Python
- Лямбда-функции в Python
- Область видимости переменных
- Поиск индекса элемента в списке
- Создание списка через итерацию
- Методы сравнения множеств
- Работа с контекстными менеджерами















