1 python reference-counting del
有史以来第一个问题,对不起,如果有人问过 - 我做了搜索,但我找不到任何似乎回答它的东西.
我一直试图理解python __del__方法的行为,因为我需要它来对包装的C代码执行一些清理.
我的理解__del__是当对象的引用计数达到零时del调用,而不是在对象引用上调用时调用.这让我相信实例化一个没有赋值的对象会在__init__之后__del__立即调用,但事实并非如此,如下面的代码所示:
class Foo():
def __init__(self):
print "Hello"
def __del__(self):
print "Goodbye"
Foo()
Hello
<__main__.Foo instance at 0x7fb943075a28>
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这里发生了什么?提前致谢.
Python交互式解释器保留对_变量中最后结果的引用.你的物体还活着.
运行另一个表达式来清除它:
>>> class Foo():
... def __init__(self):
... print "Hello"
... def __del__(self):
... print "Goodbye"
...
>>> Foo()
Hello
<__main__.Foo instance at 0x100651ef0>
>>> _
<__main__.Foo instance at 0x100651ef0>
>>> 'Hello world!'
Goodbye
'Hello world!'
Run Code Online (Sandbox Code Playgroud)