Sobes.tech
Back to questions
Junior — Middle
59

Какие специальные методы в Python позволяют реализовать контекстный менеджер и управлять ресурсами?

Answer from AI

sobes.tech AI

В Python для реализации контекстного менеджера используются специальные методы __enter__ и __exit__.

  • __enter__(self) вызывается при входе в блок with и обычно возвращает ресурс.
  • __exit__(self, exc_type, exc_val, exc_tb) вызывается при выходе из блока with, где можно освободить ресурсы или обработать исключения.

Пример:

class FileManager:
    def __init__(self, filename, mode):
        self.file = open(filename, mode)

    def __enter__(self):
        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!')

Таким образом, эти методы позволяют автоматически управлять ресурсами, например, открытием и закрытием файлов.