如何使用函数删除类的实例?

How to delete an instance of a class using a function?

提问人:Elixir 提问时间:10/19/2023 更新时间:10/19/2023 访问量:66

问:

我正在寻找一种方法在类中创建将删除该特定实例的方法。

我知道一种方法是使用 del 关键字,但我想让它基于用户交互,以便用户只需调用该方法,该实例将被删除。我该怎么做?

python-3.x python类

评论

6赞 user2357112 10/19/2023
您无法在 Python 中手动删除对象。 取消赋值变量。大多数时候,您真正需要做的是从跟踪对象的某些数据结构中删除对象。这应该通过任何数据结构来完成,而不是通过对象本身来完成。del
0赞 OysterShucker 10/19/2023
您可以将该类存储在全局列表中,然后让它从全局列表中删除自身。一旦超出范围,它将被垃圾回收。不过,我不推荐它。这是糟糕的设计。
0赞 Ulrich Eckhardt 10/19/2023
这似乎是一个所谓的XY问题,即你问错了问题。最好解释你想要实现的目标,而不是问如何实现一些不起作用的东西。另外,请参观并阅读如何提问
0赞 JonSG 10/19/2023
潜在相关:stackoverflow.com/questions/21514631/...
0赞 Elixir 10/20/2023
嗨,所以问题是我想删除该类的实例。一种方法是使用: a = Class() -- del a,但希望通过在类中实现方法来实现相同的功能,例如 a.method() 删除类的实例。可能吗?

答:

0赞 Erdit 10/19/2023 #1

@user2357112提到您无法在 Python 中手动删除对象,它们是正确的。当不再引用 Python 对象时,将删除它们。 删除对对象的引用,一旦该引用数降至零,垃圾回收器就可以回收该对象使用的内存。del

Python:

删除名称会从本地或全局命名空间中删除该名称的绑定,具体取决于该名称是否出现在同一代码块的全局语句中。如果名称未绑定,则会引发 NameError 异常...

del删除对该类实例的引用,如果代码中其他位置没有对该实例的其他引用,则该引用计数将降至零,从而允许垃圾回收器回收内存。GC 不会在每次语句后立即运行,因此一旦 GC 再次运行,它将回收已删除的实例。del