07.04 Python – Archivos de texto Context Manager

__enter__ y __exit__ son métodos especiales en Python que permiten a un objeto actuar como un “context manager”. Los context managers son objetos que definen un contexto de ejecución y pueden utilizarse con la declaración with para establecer y liberar recursos de manera adecuada.

Cuando se utiliza la declaración with, Python llamará automáticamente a los métodos __enter__ y __exit__ del objeto. Esto es útil para garantizar que los recursos se inicialicen correctamente antes de entrar en el bloque de código dentro del with y que se liberen adecuadamente al salir del bloque.

__enter__(self): Este método se llama al entrar en el bloque with. Se utiliza para configurar y preparar los recursos o el contexto necesario antes de ejecutar el código dentro del bloque with. Si el método __enter__ devuelve algún valor, este valor se asigna a la variable después de la palabra clave as en la declaración with.

__exit__(self, exc_type, exc_value, traceback): Este método se llama al salir del bloque with, ya sea cuando se ejecutó el código dentro del bloque sin errores o cuando ocurrió una excepción. Se utiliza para realizar tareas de limpieza y liberación de recursos. Los parámetros exc_type, exc_value y traceback contienen información sobre cualquier excepción que haya ocurrido dentro del bloque with.

class miContexto:
    def __init__(self,path):
        self.path=path

    def __enter__(self):
        print("--Inicio contexto--")
        self.archivo=open(self.path,"r",encoding="utf-8")
        return self.archivo

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("--Fin contexto--")
        if self.archivo:
            self.archivo.close()

with miContexto("a.txt") as archivo:
    print(archivo.read())

Related Posts