python的with和__enter__ 、 __exit__


__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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM