【发布时间】:2018-04-08 21:05:27
【问题描述】:
我想知道如何删除类中的实例。我正在尝试del self,但它似乎不起作用。这是我的代码:
class Thing:
def __init__(self):
self.alive = True
self.age = 0
def update(self):
self.age += 1
def kill(self):
if self.age >= 10:
del self
def all(self):
self.update()
self.kill()
things = []
for i in range(0, 10):
thing.append(Thing())
while True:
for thing in things:
thing.all()
我特别想删除类中的实例。我也把del self换成了self = None,但是这个说法好像没有任何效果。我怎样才能做到这一点?
【问题讨论】:
-
如果您可以“删除”一个实例,您认为当前持有该实例的变量会发生什么?应该将它们设置为
None还是什么?您在这里尝试做的事情没有任何意义。如果您想从things列表中删除该实例,这很容易且可行。但是你不能在它仍然从其他地方(例如你的things列表)引用的时候完全删除一个对象。 -
@Aran-Fey 我认为它应该具有与
del类似的效果。它应该使保存实例的变量未定义。因此,如果我在删除其中的所有内容后打印things列表,它将给出以下输出:[] -
为什么要删除它?在我看来,当
age>=10时,您需要一个属性inactive,即True,这是一个类级别的问题。另一方面,del管理内存中的项目。您要求垃圾收集器为您进行应用程序级对象管理。 -
实例不知道它是列表的成员。
-
del不是这样工作的。del删除变量而不是对象。 IOW 考虑,x = 42; y = []; y.append(x); del x; print(y)
标签: python python-3.x