1.with 与 __enter__ ,__exit__
with obj:
expressment
#进入with块时调用 obj.__enter__()
#退出with块时调用 obj.__exit__()
2. class 与__new__,__init__,__del__
创建对象实例时调用__new__(self,...)
,基本不用。。。
专门用于实例初始化 __init__(self,...)
析构函数__del__
,但并不保证在对象存在于解释器退出后的情况下,仍旧能被执行(因为解释器已经退出了)
这三个是python为数不多的不那么王道的钩子
[参考这里]