我想有一個代表IMAP連接的一類,並用with
語句中使用它,如下所示:關閉了連接`with`聲明
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)
當然這失敗,因爲IMAPConnections
有沒有屬性close
。 with
聲明完成後,如何存儲連接並將它傳遞給__exit__
函數?
Ha,gotcha。謝謝! – mart1n
我在答案中加了一些解釋。希望它有用 –