python - 当进程在 python 中完成时,有什么方法不调用类的析构函数吗?

标签 python python-3.x destructor

我想知道程序结束时不调用 destrucor(__del__)。

如何调整__del__

例如,

class destruct:
    def __init__(self, name):
        self.name = name
        print(f"(initializing {self.name}...)")

    def __del__(self):
        print(f"(Destroying {self.name} ...)")


test1 = destruct('a')
test2 = destruct('b')

该代码的结果:

(initializing a...)
(initializing b...)
(Destroying a ...)  <- I don't want to printing this message
(Destroying b ...)  <- I don't want to printing this message

最佳答案

__del__ 的全部要点是在删除对象时调用。

对于 C-Python,如果对象的引用计数器为 0,则对象将被删除,这通常是在函数范围的末尾或程序结束时。

如果你不想要这种行为,那么不要使用 __del__,而是实现一些其他的显式机制。

如果您提供有关您的确切背景的更多详细信息,我们可能会建议。

关于python - 当进程在 python 中完成时,有什么方法不调用类的析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58751045/

相关文章:

python - 如何使用 for 循环遍历编号变量?

python - 为什么Python2.7 dict使用的空间比Python3 dict多?

python - 如果我们在子类中调用父类(super class)构造函数作为第一行,这有什么关系吗?

c++ - 在以下情况下手动调用析构函数是否是一个糟糕的设计决策?

c++ - 当对象引用作为参数传递时,为什么析构函数在函数作用域结束后调用?

python - Scrapy——抓取页面并抓取下一页

python - 不以单个样本误差之和的形式存在的 tensorflow 自定义损失

python - 在python中将数据写入.json文件

c++运算符重载,析构函数被调用

python - Pandas 面板数据 - 考虑年份差距将值移动两次