__enter__(): 在使用with語句時調用,會話管理器在代碼塊開始前調用,返回值與as后的參數綁定
__exit__(): 會話管理器在代碼塊執行完成好后調用,在with語句完成時,對象銷毀之前調用
test.txt的內容為hello world!
class Test(object): def __init__(self,name,flag): self.filename = name self.flag = flag def __enter__(self): ''' @summary: 使用with語句是調用,會話管理器在代碼塊開始前調用,返回值與as后的參數綁定 ''' print "__enter__:Open %s"%self.filename self.f = open(self.filename,self.flag) return self.f def __exit__(self,Type, value, traceback): ''' @summary: 會話管理器在代碼塊執行完成好后調用(不同於__del__)(必須是4個參數) ''' print "__exit__:Close %s"%self.filename self.f.close() def __del__(self): print "__del__" if __name__ == "__main__": with Test('test.txt','r+') as f: content = f.read() print content print "end"
來源:https://blog.csdn.net/xhw88398569/article/details/48691487
https://www.cnblogs.com/lipijin/p/4460487.html