首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python对象删除自身

Python对象删除自身
EN

Stack Overflow用户
提问于 2008-11-16 03:30:00
回答 11查看 142.2K关注 0票数 84

为什么这个不起作用?我正在尝试创建一个类的实例delete本身。

代码语言:javascript
复制
>>> class A():
    def kill(self):
        del self


>>> a = A()
>>> a.kill()
>>> a
<__main__.A instance at 0x01F23170>
EN

回答 11

Stack Overflow用户

发布于 2008-11-16 03:41:13

“‘self”只是对对象的引用。“'del self”正在从kill函数的本地命名空间中删除“self”引用,而不是从实际对象中删除。

要亲自查看这一点,请看一下执行这两个函数时会发生什么:

代码语言:javascript
复制
>>> 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
票数 73
EN

Stack Overflow用户

发布于 2008-11-16 03:46:09

首先,您不需要使用del删除实例。一旦对象的最后一个引用消失,该对象将被垃圾回收。也许你应该告诉我们更多关于整个问题的信息。

票数 47
EN

Stack Overflow用户

发布于 2012-09-28 13:41:35

实际上,你不应该需要删除对象来完成你想要做的事情。相反,您可以更改对象的状态。一个不需要编码的例子就是你的玩家与怪物战斗并杀死怪物。这个怪物的状态是战斗。怪物将获得战斗所需的所有方法。当怪物因生命降至0而死亡时,怪物状态将变为死亡,你的角色将自动停止攻击。这种方法与使用标志甚至关键字非常相似。

显然,在python中不需要删除类,因为当它们不再使用时,它们将被自动垃圾回收。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/293431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档