Sobes.tech
Junior — Middle

Quais passos devem ser seguidos para implementar um gestor de contexto próprio em Python?

sobes.tech IA

Resposta da IA

Para implementar um gestor de contexto próprio em Python, é necessário definir um objeto que implemente os métodos:

  • __enter__(self) — chamado ao entrar no contexto (with), retorna o objeto que será vinculado à variável após as.
  • __exit__(self, exc_type, exc_val, exc_tb) — chamado ao sair do contexto, recebe informações sobre a exceção (se houve), e permite gerenciá-la ou suprimí-la.

Exemplo de um gestor de contexto simples:

class MyContextManager:
    def __enter__(self):
        print("Entrando no contexto")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Saindo do contexto")
        if exc_type:
            print(f"Tratamento da exceção: {exc_val}")
        # Retornar True para suprimir a exceção
        return True

with MyContextManager() as cm:
    print("Dentro do with")
    raise ValueError("Erro")  # A exceção será tratada e suprimida

Também é possível usar o decorador contextlib.contextmanager para criar um gestor de contexto baseado em um gerador, o que simplifica o código.