|
发表于 2021-4-23 13:09:02
|
显示全部楼层
本帖最后由 阿奇_o 于 2021-4-23 13:25 编辑
因为你要调用 对象的__del__() 才会去执行。
del var 会 在“命名空间”中 删除该变量/对象,是“手动销毁”了该变量/对象。
另外 del 好像在某种情况下会调用__del__我不记得怎么用了。。你可以自己去查查文档。
- In [1]: class FO():
- ...: def __del__(self):
- ...: print('我被删除了?')
- ...:
- In [2]: f=FO()
- In [3]: f
- Out[3]: <__main__.FO at 0x1d1d9114788>
- In [5]: f.__del__()
- 我被删除了?
- In [6]: f # 文档里说:__del__ method is not guaranteed ... 不能保证在解释器运行期间真的去“删除”该对象。即 它还是可能存在的。要看不同对象的类型及其垃圾回收机制。
- Out[6]: <__main__.FO at 0x1d1d9114788>
- In [7]: del f # “手动消耗”该对象
- In [8]: f
- ---------------------------------------------------------------------------
- NameError Traceback (most recent call last)
- <ipython-input-8-a9fcd54b25e7> in <module>
- ----> 1 f
- NameError: name 'f' is not defined
复制代码
|
|