Python高级语法-私有属性-with上下文管理器(4.7.3)

目录

  • 1.说明
  • 2.代码
  • 关于作者

@

1.说明

上下文管理器
这里使用with open操作文件,让文件对象实现了自动释放资源。我们也能自定义上下文管理器,通过__enter__()和__exit__()这两个魔术方法来自定义的操作文件
当有上下文使用的场景的时候,如打开一个东西要关闭,像等文件等资源,就可以使用这种方式去定义一个上下文管理器

2.代码

class File():
    def __init__(self,filename,mode):
        self.filename  = filename
        self.mode = mode

    def __enter__(self):
        print("__enter__")
        self.f = open(self.filename,self.mode,encoding="utf-8")
        return self.f

    def  __exit__(self, exc_type, exc_val, exc_tb):
        print("__exit__")
        self.f.close()

with File("魔方方法.py","r") as f:
    print(f.read())

关于作者

个人博客网站
个人GitHub地址
个人公众号:

原文地址:https://www.cnblogs.com/simon-idea/p/11412247.html

时间: 2024-11-03 03:39:58

Python高级语法-私有属性-with上下文管理器(4.7.3)的相关文章

Python高级语法-私有属性-魔法属性(4.7.2)

目录 1.说明 2.代码 关于作者 @ 1.说明 常用的一些魔法方法如下 所谓魔法方法,就是调用的时候 不好好正常调用 2.代码 class Test: """ 我是___doc____ """ class_index = 0 def __init__(self,index): self.index = index print("index") def __call__(self, *args, **kwargs): prin

python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)

0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以下情况的简化: var = manager.__enter__() try: do_something(var) finally: manager.__exit__() 换言之,PEP 343中定义的上下文管理器协议允许将无聊的try...except...finally结构抽象到一个单独的类中,仅

Python菜鸟晋级05----with....as....(上下文管理器)

介绍 上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形式是with...as... 应用 比较一下两段代码: 没有使用上下文管理器: writer = open("test.txt", "w") try: writer.write('Hello ') writer.write('World') finally:

上下文管理器学习与简单的文件复制

# =====================上下文管理器======================================== ''' 既然文件一定要及时关闭,是否能够让Python自动执行这个关闭过程,上下文管理器可以完成自动关闭文件. 能否同时管理多个文件的自动关闭 ''' with open (r"D:\s14\day1\test_doc.py","r+") as file: #代表用上下文管理器打开一个文件 file.write("pr

Python深入02 上下文管理器

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形式是with...as... 关闭文件 我们会进行这样的操作:打开文件,读写,关闭文件.程序员经常会忘记关闭文件.上下文管理器可以在不需要文件的时候,自动关闭文件. 下面我们看一

Python上下文管理器

上下文管理器 在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后,需要继续执行一些收尾动作. 例如:当需要操作文件或数据库的时候,首先需要获取文件句柄或者数据库连接对象,当执行完相应的操作后,需要执行释放文件句柄或者关闭数据库连接的动作. 又如,当多线程程序需要访问临界资源的时候,线程首先需要获取互斥锁,当执行完成并准备退出临界区的时候,需要释放互斥锁. 对于这些情况,Python中提供了上下文管理器(Contex

翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器

原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic Python>(四):字典.集合.元组 下一篇:TO BE UPDATED.. 2.7 类 2.7.1 用isinstance函数检查一个对象的类型 许多新手在接触Python之后会产生一种“Python中没有类型”的错觉.当然Python的对象是有类型的,并且还会发生类型错误.比如,对一个int型对象

python --上下文管理器

转自:http://www.cnblogs.com/vamei/archive/2012/11/23/2772445.html 上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形式是with...as... 关闭文件 我们会进行这样的操作:打开文件,读写,关闭文件.程序员经常会忘记关闭文件.上下文管理器可以在不需要文件的时候,自动关闭文件. 下

python深入学习02 上下文管理器

上下文管理器(context manager)主要用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形式是with...as... 关闭文件 上下文管理器有个特别好的优点:可以在不使用文件的时候,自动关闭文件,节省了f.close()的步骤 上下文管理器有隶属于它的程序块.当隶属的程序块执行结束的时候(也就是不再缩进),上下文管理器自动关闭了文件 (我们通过f.closed来查询文件是否关闭).我们相当于使用缩进规定了文件对象f的