Je veux avoir une classe qui représente une connexion IMAP et l'utiliser avec une déclaration with
comme suit:Fermeture d'une connexion avec un `with` déclaration
class IMAPConnection:
def __enter__(self):
connection = imaplib.IMAP4_SSL(IMAP_HOST)
try:
connection.login(MAIL_USERNAME, MAIL_PASS)
except imaplib.IMAP4.error:
log.error('Failed to log in')
return connection
def __exit__(self, type, value, traceback):
self.close()
with IMAPConnection() as c:
rv, data = c.list()
print(rv, data)
Naturellement cela échoue puisque IMAPConnections
n'a pas d'attribut close
. Comment puis-je stocker la connexion et la passer à la fonction __exit__
lorsque l'instruction with
est terminée?
Ha, gotcha Merci – mart1n
J'ai ajouté quelques explications supplémentaires dans ma réponse. –