|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> class Test:
def __init__(self):
print(1)
def __del__(self):
print(2)
>>> t = Test()
1
>>> del t
2
>>> t = Test()
1
>>> t
<__main__.Test object at 0x00FF7570>
>>> del t
>>> t
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
t
NameError: name 't' is not defined
为什么直接删除实例t后,__del__能被调用,而打了一个t后删除它,__del__无法被调用(显示2)?
本帖最后由 SixPy 于 2016-12-22 11:11 编辑
- >>> class Test:
- def __ini t__(self):
- print('init',he x(id(self)))
- def __de l__(self):
- print('de l',he x(id(self)))
-
- >>> t = Test()
- init 0x19f3830
- >>> t
- <__main__.Test object at 0x019F3830>
- >>> t
- <__main__.Test object at 0x019F3830>
- >>> de l t
- >>> aa=99
- >>> aa
- de l 0x19f3830
- 99
- >>>
复制代码
del 语句是由 python的gc(垃圾回收系统)执行的,不是立即有效,而是延迟一段时间。
|
|