为什么这个不起作用?我正在尝试创建一个类的实例delete本身。
>>> class A():
def kill(self):
del self
>>> a = A()
>>> a.kill()
>>> a
<__main__.A instance at 0x01F23170>
发布于 2008-11-16 03:41:13
“‘self”只是对对象的引用。“'del self”正在从kill函数的本地命名空间中删除“self”引用,而不是从实际对象中删除。
要亲自查看这一点,请看一下执行这两个函数时会发生什么:
>>> class A():
... def kill_a(self):
... print self
... del self
... def kill_b(self):
... del self
... print self
...
>>> a = A()
>>> b = A()
>>> a.kill_a()
<__main__.A instance at 0xb771250c>
>>> b.kill_b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in kill_b
UnboundLocalError: local variable 'self' referenced before assignment
发布于 2008-11-16 03:46:09
首先,您不需要使用del删除实例。一旦对象的最后一个引用消失,该对象将被垃圾回收。也许你应该告诉我们更多关于整个问题的信息。
发布于 2012-09-28 13:41:35
实际上,你不应该需要删除对象来完成你想要做的事情。相反,您可以更改对象的状态。一个不需要编码的例子就是你的玩家与怪物战斗并杀死怪物。这个怪物的状态是战斗。怪物将获得战斗所需的所有方法。当怪物因生命降至0而死亡时,怪物状态将变为死亡,你的角色将自动停止攻击。这种方法与使用标志甚至关键字非常相似。
显然,在python中不需要删除类,因为当它们不再使用时,它们将被自动垃圾回收。
https://stackoverflow.com/questions/293431
复制相似问题