Python with解析 __enter__()、__exit__()

__enter__():在使用with语句时调用,会话管理器在代码块开始前调用,返回值与as后的参数绑定

__exit__():会话管理器在代码块执行完成好后调用,在with语句完成时,对象销毁之前调用

test.txt:

Hello world!

测试代码

  1. class Test(object):

  2. def __init__(self,name,flag):

  3. self.filename = name

  4. self.flag = flag

  5.  
  6. def __enter__(self):

  7. '''

  8. @summary: 使用with语句是调用,会话管理器在代码块开始前调用,返回值与as后的参数绑定

  9. '''

  10. print "__enter__:Open %s"%self.filename

  11. self.f = open(self.filename,self.flag)

  12. return self.f

  13.  
  14. def __exit__(self,Type, value, traceback):

  15. '''

  16. @summary: 会话管理器在代码块执行完成好后调用(不同于__del__)(必须是4个参数)

  17. '''

  18. print "__exit__:Close %s"%self.filename

  19. self.f.close()

  20.  
  21. def __del__(self):

  22. print "__del__"

  23.  
  24. if __name__ == "__main__":

  25. with Test('test.txt','r+') as f:

  26. content = f.read()

  27. print content

  28. print "end"

输出:

  1. __enter__:Open test.txt

  2. Hello world!

  3. __exit__:Close test.txt

  4. del

  5. end

出处:https://blog.csdn.net/xhw88398569/article/details/48691487

猜你喜欢

转载自blog.csdn.net/jackliu16/article/details/81212640
今日推荐