Курс 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"
- Работа с контекстными менеджерами
- Создание задания в Cron
- Flask — веб-фреймворк Python
- Метод join для объединения строк
- Метод join() для объединения элементов
- Измерение времени выполнения кода с помощью time
- Работа с IP-адресами в Python
- Конвертация текстовых чисел с помощью Numerizer
- Преобразование в float
- Множественное наследование в Python
- Обработка ошибок в Python
- Взаимодействие с sys
- Удаление эмодзи с помощью pandas
- CSV строка разделение в Python
- Логирование в Python
- Сериализация объектов в Python
- Игра «Угадывание чисел»
- Метод eq для сравнения объектов
- Методы в Python
- Декораторы в Python
- Работа со строками
- Работа с файлами в Python
- Проверка типов с использованием isinstance
- Вычисление натуральных логарифмов в NumPy
- Отладка регулярных выражений в Python
- Преобразование букв в нижний регистр
- Метод join для наборов
- Создание таблиц в Python с PrettyTable
- Обработка исключения UnboundLocalError
- Быстрый поиск кода
- Функция pow() — возвести число в степень
- Combobox в Tkinter
- Проверка условий: all и any
- Фильтрация элементов с помощью islice
- Big O оптимизация
- Создание треугольника Паскаля
- Запуск внешнего кода в Jupyter
- Форматирование чисел в Python
- Логирование с Loguru
- Python 3.12: переиспользование кавычек
- Декораторы в Python
- Работа с набором данных CIFAR10 в PyTorch
- Модуль subprocess: запуск внешних команд
- Форматирование кода на Python
- Настройка Cron
- Красивый вывод списка
- Распаковка аргументов в Python















