即使强制删除,如何使对象坚不可摧?

时间:2016-03-13 22:09:06

标签: python class object del

即使使用del保留字(我认为这意味着强制删除),我怎样才能创建一个坚不可摧这样的对象?被删除?

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

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

我想我必须在对象类中使用__del__()做一些技巧,但是如何?

1 个答案:

答案 0 :(得分:3)

python中的对象具有引用计数,它基本上表示对象所在的位置数量。使用del删除对该对象的一个​​引用(它不强制删除它)。然后在剩下0个引用时调用__del__。您可以创建对该对象的新引用,这样可以防止它被删除,如下所示:

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

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

<强>更新

如果您使用的是列表,则应将其转换为不可变对象,例如tuple,以防止删除等更改:

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