请问老师为什么__enter__要加入return self?

来源:4-13 contextlib简化上下文管理器

慕数据3541479

2018-04-16

在上下文管理器中,__enter__函数中加入return self的背后原理时什么?

写回答

1回答

慕容小小呢

2018-04-16

比如你打开一个文件

with open(xxx.txt) as f:

执行__enter__返回的这个self就是你就是你打开的那个文件,你才可以对文件读写操作,

你可以自己顶一个上下文管理的类试一下,不返回这个self你是没办法打开文件的

class MyResource:  

     def __enter__(self):       

        print("查询开始")       

        # return self   

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

       print("查询结束")

   def query(self):

       print("查询中")

with MyResource() as f:
   f.query()

4
1
慕数据3541479
基本相通了,谢谢
2018-04-16
共1条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程