__del__在未分配python对象上的行为
有史以来的第一个问题,对不起,如果以前有人问过-我搜索过,但我找不到任何似乎能回答这个问题的东西 我一直在试图理解python的__del__在未分配python对象上的行为,python,reference-counting,del,Python,Reference Counting,Del,有史以来的第一个问题,对不起,如果以前有人问过-我搜索过,但我找不到任何似乎能回答这个问题的东西 我一直在试图理解python的\uu del\uu方法的行为,因为我需要它对包装好的C代码执行一些清理 我对\uuuu del\uuuu的理解是,当对象的引用计数达到零时调用该函数,而不是在对象引用上调用del时调用该函数。这使我相信,在没有赋值的情况下实例化一个对象会调用\uuuu init\uuuuuuuu,然后紧接着调用\uuuuu del\uuuuuuuu,但情况似乎并非如此,如下代码所示:
\uu del\uu
方法的行为,因为我需要它对包装好的C代码执行一些清理
我对\uuuu del\uuuu
的理解是,当对象的引用计数达到零时调用该函数,而不是在对象引用上调用del
时调用该函数。这使我相信,在没有赋值的情况下实例化一个对象会调用\uuuu init\uuuuuuuu
,然后紧接着调用\uuuuu del\uuuuuuuu
,但情况似乎并非如此,如下代码所示:
class Foo():
def __init__(self):
print "Hello"
def __del__(self):
print "Goodbye"
Foo()
Hello
<__main__.Foo instance at 0x7fb943075a28>
class Foo():
定义初始化(自):
打印“你好”
定义(自我):
打印“再见”
Foo()
你好
有人能解释一下这是怎么回事吗?提前感谢。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!'
>类Foo():
... 定义初始化(自):
... 打印“你好”
... 定义(自我):
... 打印“再见”
...
>>>Foo()
你好
>>> _
>>>“你好,世界!”
再见
“你好,世界!”
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!'
>类Foo():
... 定义初始化(自):
... 打印“你好”
... 定义(自我):
... 打印“再见”
...
>>>Foo()
你好
>>> _
>>>“你好,世界!”
再见
“你好,世界!”
非常感谢!偷偷摸摸的翻译,囤积参考资料@马蒂扬皮特斯完成了。我已经在这个网站上潜伏多年了,直到今天才需要问一个问题。我现在需要学习如何使用它!非常感谢!偷偷摸摸的翻译,囤积参考资料@马蒂扬皮特斯完成了。我已经在这个网站上潜伏多年了,直到今天才需要问一个问题。我现在需要学习如何使用它!