位置:首页 > Python > 自定义上下文管理器实现原理与使用方法

自定义上下文管理器实现原理与使用方法

时间:2026-08-16  |  作者:清风无痕  |  阅读:0

在开发中可以根据实际情况设计自定义上下文管理器。只需要让定义的类支持上下文管理协议,并实现__enter__()__exit__()方法即可。

自定义上下文管理器

自定义上下文管理器示例

接下来,构建自定义的上下文管理器,示例如下:

class OpenOperation:
    def __init__(self, path, mode):
        # 记录要操作的文件路径和模式
        self.__path = path
        self.__mode = mode
    def __enter__(self):
        print('代码执行到__enter__')
        self.__handle = open(self.__path, self.__mode)
        return self.__handle
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("代码执行到__exit__")
        self.__handle.close()
with OpenOperation('自定义上下文管理.txt', 'a+') as file:
    # 创建写入文件
    file.write("Custom Context Manage")
    print("文件写入成功")

代码作用说明

这段代码实现了一个自定义上下文管理器 OpenOperation 类。

  • 进入上下文时,会在 __enter__() 方法里完成文件打开。
  • 退出上下文时,则由 __exit__() 方法负责把文件关闭。

运行结果

运行程序,结果如下所示:

代码执行到__enter__
文件写入成功
代码执行到__exit__

执行顺序分析

从输出结果可以很容易看清整个执行顺序。

  • 当使用with语句创建上下文管理器后,程序会先调用__enter__()方法。
  • 接着执行这个方法里的语句体。
  • 然后再运行with语句块中的代码。
  • 等文件写入完成之后,最后再由__exit__()方法出面收尾,把资源关闭掉。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多