gpt4 book ai didi

python - __del__ 真的是析构函数吗?

转载 作者:太空狗 更新时间:2023-10-29 17:41:18 25 4
gpt4 key购买 nike

我主要用 C++ 做事,其中析构函数方法实际上是为了销毁已获取的资源。最近我开始使用 python(这真的很有趣而且很棒),我开始学习它像 java 一样具有 GC。因此,没有过分强调对象所有权(构造和销毁)。

据我所知,__init__() 方法对我来说在 python 中比在 ruby​​ 中更有意义,但是 __del__() 方法,我们真的需要在我们的类中实现这个内置函数吗?如果我错过 __del__(),我的类(class)会缺少什么吗?我可以看到 __del__() 有用的一个场景是,如果我想在销毁对象时记录一些东西。除了这个还有别的吗?

最佳答案

Python 3 docs开发人员现在已经明确表示 destructor 实际上不是方法 __del__ 的合适名称。

object.__del__(self)

Called when the instance is about to be destroyed. This is also called a finalizer or (improperly) a destructor.

请注意,OLD Python 3 文档曾经建议“析构函数”正确的名称:

object.__del__(self)

Called when the instance is about to be destroyed. This is also called a destructor. If a base class has a __del__() method, the derived class’s __del__() method, if any, must explicitly call it to ensure proper deletion of the base class part of the instance.

来自 other answers也来自 Wikipedia :

In a language with an automatic garbage collection mechanism, it would be difficult to deterministically ensure the invocation of a destructor, and hence these languages are generally considered unsuitable for RAII [Resource Acquisition Is Initialization]

所以你几乎不应该实现 __del__,但它让你有机会在某些(罕见的?)用例中这样做

关于python - __del__ 真的是析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852560/

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