如何使一个物体即使强制删除也不可摧毁?

2024-04-26 09:55:03 发布

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

我怎样才能使一个对象不可破坏,即使使用del保留字(我认为它意味着强制删除),它也不会被删除?你知道吗

我将对象存储在一个列表中,如下所示:

list = [obj1, obj2, obj3, obj4 ....]
del list[0]

我想我必须对object类中的__del__()做一些技巧,但是怎么做呢?你知道吗


Tags: 对象列表技巧objectlistdelobj2obj1
1条回答
网友
1楼 · 发布于 2024-04-26 09:55:03

python中的对象具有引用计数,这基本上意味着对象存在于其中的位置的数量。使用del删除对对象的一个引用(它不会强制删除它)。^当剩下0个引用时,调用{a1}。您可以创建对该对象的新引用,这样可以防止删除该对象,如下所示:

class obj:
    def __del__(self):
         global _ref
         _ref = self
         return

这将防止通过创建全局引用来删除对象。 请记住,不建议这样做,因为这样会阻止垃圾收集器正常工作。你知道吗

更新:

在使用列表的情况下,应将其转换为tuple等不可变对象,以防止发生删除等更改:

mylist = [obj1, obj2, obj3, obj4 ....]
mylist = tuple(mylist)

相关问题 更多 >