博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python的with和__enter__ 、 __exit__
阅读量:6277 次
发布时间:2019-06-22

本文共 949 字,大约阅读时间需要 3 分钟。

__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

你可能感兴趣的文章
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>