enter, exit用来和with..as..语句搭配使用。对于一个类A,定义其enter,以及exit成员方法。语句with exp1 as var: 这样的语句,exp1首先被执行,调用其结果的enter函数,enter函数的返回值赋值给var,with语句中的代码被执行之后,调用exp1结果的exit函数,exit还包括三个参数,保存了with代码段中遇到的异常。可以用来简化代码,管理一些需要成对处理(打开,关闭)的操作,比如各种资源的打开和关闭。
class A(object):
def __init__(self):
self.name = 'A'
def __enter__(self):
print("entering A")
return self
def __exit__(self, type, value, trace):
print("exiting A")
with A() as a:
print(a.name)
运行结果是:
entering A
a
exiting A