学习版本3.5.2
with语句:实现了__enter__()方法和__exit__()方法的对象能够使用。__enter__()方法在调用with代码块之前调用,__exit__()方法在调用with代码块之后调用,with代码块抛出异常的时候也能调用__exit__()方法。
实验代码:
#/usr/bin/python3
# -*- utf-8 -*-
#学习版本3.5.2
class test(object):
def __init__(self, num):
self.num = num
def __enter__(self):
print("__enter__")
return self
def __exit__(self, type, value, traceback):
print("__exit__")
print(type)
print(value)
print(traceback)
return self
if __name__ == "__main__":
t = test(4)
with t:
print(t.num)
raise Exception("is an exception")
print("main")
运行结果
__enter__
4
__exit__
<class 'Exception'>
is an exception
<traceback object at 0x1012e3a88>
main