未赋值python对象上的uu del_uu的行为

2024-04-27 03:44:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有史以来第一个问题,抱歉,如果有人问过-我确实搜索过,但我找不到任何似乎可以回答它。你知道吗

我一直在试图理解python的__del__方法的行为,因为我需要它对包装好的C代码执行一些清理。你知道吗

我对__del__的理解是,当对象的引用计数达到零时调用del,而不是在对象引用上调用del。这让我相信,在没有赋值的情况下实例化一个对象会立即调用__init__,然后再调用__del__,但情况似乎并非如此,如下代码所示:

class Foo():
   def __init__(self):
      print "Hello"
   def __del__(self):
      print "Goodbye"

Foo()
Hello
<__main__.Foo instance at 0x7fb943075a28>

有人能解释一下这是怎么回事吗?提前谢谢。你知道吗


Tags: 对象实例方法代码selfhellofooinit
1条回答
网友
1楼 · 发布于 2024-04-27 03:44:51

Python交互解释器保留对^{} variable中最后一个结果的引用。你的物体还活着。你知道吗

运行另一个表达式以清除它:

>>> 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!'

相关问题 更多 >