Junior — Middle
75
¿Qué métodos debe implementar una clase para poder ser utilizada en una construcción with para la gestión automática de recursos?
Respuesta de la IA
sobes.tech AI
Для использования класса в конструкции with в Python он должен реализовать методы контекстного менеджера:
__enter__(self): вызывается при входе в блокwith. Обычно здесь происходит инициализация ресурса, и метод возвращает объект, который будет доступен внутри блока.__exit__(self, exc_type, exc_val, exc_tb): вызывается при выходе из блокаwith, даже если внутри блока возникло исключение. Здесь обычно освобождаются ресурсы или выполняется очистка.
Пример:
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
with FileManager('test.txt', 'w') as f:
f.write('Hello, world!')