Курс 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"
- Подсчет элементов в списке с Counter
- Работа с Enum в Python3.
- Обработка исключений в Python 3
- Работа с множествами в Python
- Функции map() и reduce() в Python
- Colorama: окрашивание текста в Python
- Возвращение нескольких значений через кортеж или класс
- Оператор обр. импликации
- Переопределение метода __and__
- Отображение графиков в Jupyter с Matplotlib
- Метод __iand__ для пользовательских классов
- Создание даты из строки ISO
- Настройка нарезки списков
- Использование type hints
- Модуль xkcd: загрузка комиксов
- Очистка вывода в Python
- Управление пакетами с pip
- Имена объектов в Python
- Нахождение самого длинного слова в списке с помощью max
- Объединение списков в Python.
- Документация функции help() в Python
- Форматирование строк в Python.
- Выборка чисел
- split() — разделение строки
- Участие в LP стейкинге Waves
- Установка максимального количества цифр
- EMOT преобразование эмодзи в текст
- Работа со строками
- Уникальность ключей в словаре
- Работа с Telegram API на Python
- Измерение времени выполнения кода с использованием time
- Декоратор @override
- Операции с датами в Python
- Генераторы в Python
- Многопоточность в Python
- Фильтрация списка от «ложных» значений
- Комментарии в Python
- Переопределение оператора % для объектов
- Функция reversed() в Python
- Сравнение строк в Python
- Преобразование числа в восьмеричную строку
- Удаление дубликатов в pandas
- Добавление элемента к кортежу
- Сравнение def и lambda функций в Python
- Установка виртуального окружения Python
- *args и **kwargs в Python















