美文网首页
上下文管理协议

上下文管理协议

作者: ___大鱼___ | 来源:发表于2019-05-02 17:26 被阅读0次

python中类里面只要实现 __enter__、__exit__方法就实现了上下文协议可以用whit 语句直接用 始终会执行 __enter__、__exit__中的代码无论是否报错

class WithClass:
    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print exc_tb

    def do_something(self):
        print 'do something'


with WithClass() as a:
    print a.do_something()

python中帮我们封装了一个包可以使我们的函数可以用来作为上下文管理器

# coding: utf-8
import contextlib


@contextlib.contextmanager
def file_open(filename):
    print '打开文件'
    yield {}
    print '关闭文件'

    
with file_open('a.txt') as a:
    print 'file processing'

函数中必须有yield
yield 之前相当于我们的enter方法 yield之后代码相当于exit方法

相关文章

  • 2021-02-08

    1.上下文管理协议与上下文管理器的基础概念 上下文管理协议(Context Management Protocol...

  • Python上下文管理器

    上下文管理器 概念:实现了上下文协议的对象即为上下文管理器。 上下文管理器的协议: __enter__进入的方法_...

  • python中上下文管理器

    什么是上下文管理器? 代码的环境就是上下文,实现了上下文管理器协议的类产生的实例就是上下文管理器对象。在类中声名e...

  • python上下文管理器(context manager)

    首先,什么是上下文管理器?上下文管理器就是实现了上下文管理协议的对象。主要用于保存和恢复各种全局状态,关闭文件等,...

  • Python基础

    获取方法的名称 将当前文件的上级目录添加到环境变量中 上下文管理协议 with,as 都是上下文协议 with o...

  • with与async with

    应用场景: 文件的读写 数据库的读写操作 Flask的上下文管理 上下文管理协议:当使用with语句时,解释器会自...

  • 上下文管理协议

    python中类里面只要实现 __enter__、__exit__方法就实现了上下文协议可以用whit 语句直接...

  • python with语句

    常用用法: 一、术语: 上下文管理协议(Context Management Protocol):包含方法 ent...

  • 上下文管理器

    1. 定义 1.1 上下文协议 __enter__()和__exit__()方法构成了上下文协议 1.2 上下文管...

  • python 让对象支持上下文管理协议

    8.3 通过with语句出发,让对象支持上下文管理协议 需要实现 enter 、exit 方法 这个类的核心功能就...

网友评论

      本文标题:上下文管理协议

      本文链接:https://www.haomeiwen.com/subject/ymnnnqtx.html