我想有一个代表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
我在答案中加了一些解释。希望它有用 –