基于类的实现
一个上下文管理器的类,最起码要定义 __enter__
和 __exit__
方法。 让我们来构造我们自己的开启文件的上下文管理器,并学习下基础知识。
通过定义 __enter__
和 __exit__
方法,我们可以在with
语句里使用它。我们来试试:
我们的 __exit__
函数接受三个参数。这些参数对于每个上下文管理器类中的 __exit__
方法都是必须的。我们来谈谈在底层都发生了什么。
with
语句先暂存了File
类的__exit__
方法。然后它调用
File
类的__enter__
方法。__enter__
方法打开文件并返回给with
语句。打开的文件句柄被传递给
opened_file
参数。我们使用
.write()
来写文件。with
语句调用之前暂存的__exit__
方法。__exit__
方法关闭了文件。
最后更新于