class Index:
def __enter__(self):
print("start")
return self # 一定要返回self
def __exit__(self, exc_type, exc_val, exc_tb):
print("END")
def do(self):
print("do_something")
with Index() as index:
index.do()
返回:
start
do_something
END
__enter__ 可作为构造函数
__exit__ 可作为析构函数
from contextlib import contextmanager
@contextmanager
def file_open(file_name):
print("start")
yield {}
print("end")
with file_open("text.txt") as f:
print("mid mid mid")