gpt4 book ai didi

python - 判断对象是否已经完成

转载 作者:行者123 更新时间:2023-12-05 06:33:11 25 4
gpt4 key购买 nike

GC changes 的影响之一在 Python 3.4 中发生的是 gc-tracked 对象只会调用一次其 __del__ 方法,即使第一个 __del__ 调用复活了对象:

>>> class Foo(object):
... def __del__(self):
... print('__del__')
... global x
... x = self
...
>>> x = Foo()
>>> del x
__del__
>>> del x
>>>

(未跟踪的对象当前行为不同,因为它们没有指示已完成状态的标志。您可以通过在上面的类定义中插入 __slots__ = () 来看到这一点。我我不确定这是错误还是已知和公认的行为差异。)

出于调试目的,能够确定对象是否已调用其 __del__ 方法会很有用。一种选择是在 __del__ 中插入一行设置指示器标志,但这需要提前准备,并且对于用 C 编写的带有 __del__ 的对象可能无法实现,例如发电机。

是否可以在不修改其 __del__ 方法的情况下确定对象是否已完成?

最佳答案

在 Python 3.9 中,这可以使用 gc.is_finalized(obj) 进行测试。

关于python - 判断对象是否已经完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50882416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com