Курс 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"
- Python union() функция — объединение множеств
- Оценка точности модели
- Метод clear для коллекций
- Библиотека sh: использование команд bash в Python
- Сравнение объектов в Python
- Операции с массивами в NumPy
- Сортировка данных в Python
- Проверка вхождения подстроки
- Python itertools combinations() — группировка элементов
- Создание пар из последовательностей
- Работа с контекстными переменными
- Удаление файлов и папок в Python
- Работа с кортежами
- Python Поверхностное Копирование
- Установка и использование howdoi
- Применение функции map() с лямбда-функциями
- Удаление ресурса в Python
- Необязательные аргументы в Python
- Установка и использование модуля Wikipedia
- Оператор is в Python
- Функция format() в Python
- Удаление ключей из словаря
- Объединение списков в строку
- Создание комплексных чисел
- Многоточие в Python
- Функция count() в Python
- Обработка ошибки IndexError
- Метод Enumerate() для списков
- Прокачанный трейсинг ошибок
- Метод getitem для доступа к элементам последовательности
- Импорт и использование модулей в Python
- Решение переменной Шредингера
- Типы возвращаемых значений в Python
- Декоратор проверки активности
- Удаление эмодзи с помощью pandas
- Создание новых функций с помощью functools.partial
- Основы Python за 14 дней
- Работа с enumerate()
- Аннотации типов в Python
- Профилирование данных с Pandas
- Инициализация объекта
- Лямбда-функции в Python
- Создание словарей и множеств в Python.
- Настройка вывода в Numpy
- Создание namedtuple из словаря
- Условные выражения в Python
- Python Аргументы по умолчанию















