我主要在C++中做事,其中析构函数方法实际上是用于破坏获得的资源.最近我开始使用python(这真的很有趣也很棒),我开始学习它像GC一样的GC.因此,没有强调对象所有权(构造和破坏).
据我所知,这个 __init__()方法在python中对我来说比对ruby更有意义,但是__del__()方法,我们真的需要在我们的类中实现这个内置函数吗?如果我想念,我的班级会缺少什么__del__()?我可以看到__del__()有用的一个场景是,如果我想在销毁对象时记录某些内容.除此之外还有什么吗?
Dom*_*Cat 14
在Python 3文档中,开发人员现在明确表示析构函数实际上不是该方法的适当名称__del__.
object.__del__(self)当实例即将被销毁时调用.这也称为终结器或(不正确地)析构函数.
请注意,OLD Python 3文档曾经暗示'析构函数' 是正确的名称:
object.__del__(self)
当实例即将被销毁时调用.这也称为析构函数.如果基类具有__del__()方法,则派生类的__del__()方法(如果有)必须显式调用它以确保正确删除实例的基类部分.
在具有自动垃圾收集机制的语言中,很难确定性地确保析构函数的调用,因此这些语言通常被认为不适合RAII [资源获取初始化]
所以你几乎永远不会实现__del__,但是它让你有机会在一些(罕见的)用例中这样做