第一种用法:
from contextlib import contextmanager
class Test:
def print_test(self):
print("第二次输出.....")
#单独作为一个函数,在类外部!
@contextmanager
def test():
print("第一次输出.....")
yield Test()
print("最后一次输出....")
#直接调用test()方法,t=yield返回的生成器结果!
with test() as t:
t.print_test()
第二种用法:
from contextlib import contextmanager
class Test:
def print_test(self):
print("第二次输出.....")
#单独作为一个类的方法
@contextmanager
def test(self):
print("第一次输出.....")
yield self
print("最后一次输出....")
#直接调用Test()的方法,t=yield返回的生成器结果!
with Test().test() as t:
t.print_test()
第三种用法:
from contextlib import contextmanager
#单独作为一个方法
@contextmanager
def test():
print("第一次输出.....")
yield
print("最后一次输出....")
#yield不返回任何结果
with test() :
print("第二次输出.....")