python的with和__enter__ 、 __exit__
阿新 • • 發佈:2018-12-02
__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