python 魔术方法上下文管理
上下文管理 文件IO操作可以对文件对象使用上下文管理,使用with……as语法。 with open("test") as f: pass 仿照上例写一个自己的类,实现上下文管理。 class Point: pass with Point() as p: pass 结果为: --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-1-77f0ac1b02c7> in <module> 2 pass 3 ----> 4 with Point() as p: 5 pass AttributeError: __enter__ 提示属性错误,没有__exit__,看了需要这个属性。 上下文管理对象 当一个对象同时实现了 __enter__()和__exit__()方法,它就属于上下文管理对象。 __enter__():进入于此相关的上下文。如果存在该方法,with语法会把该方法的返回值作为绑定到as子句中指定的变量上。 __exit__:退出与此对象相关的上下文。 class Point: def __init__(self): print("init") def _