Python:如何"杀死"一个类实例/对象?

use*_*969 27 python oop class

我希望Roach类在达到一定量的"饥饿"时"死",但我不知道如何删除该实例.我的术语可能犯了一个错误,但我的意思是我在窗户上有很多"蟑螂",我希望特定的东西完全消失.

我会告诉你代码,但它很长.我将Roach类附加到Mastermind类的roach种群列表中.

Rob*_*ujo 20

一般来说:

  • 每个绑定变量 - >对象都会增加内部对象的引用计数器
  • 有几种常用方法可以减少引用(取消引用对象 - >变量绑定):

    1. 退出声明变量的代码块(第一次使用)
    2. destructing对象将释放所有属性/方法变量的引用 - >对象引用
    3. 调用del variable也将删除当前上下文中的引用
  • 在删除对一个对象的所有引用(counter == 0)之后,它成为垃圾收集的良好候选者,但不保证它将被处理(这里引用):

CPython目前使用带有(可选)延迟检测循环链接垃圾的引用计数方案,它会在大多数对象无法访问时立即收集,但不保证收集包含循环引用的垃圾.有关控制循环垃圾收集的信息,请参阅gc模块的文档.其他实现的行为不同,CPython可能会改变.当对象无法访问时,不要依赖于对象的立即终结(例如:始终关闭文件).


Ign*_*ams 11

您无法强制删除Python对象; 当没有任何东西引用它时(或者它在循环中仅被称为循环中的项目时)它将被删除.你必须告诉你的"Mastermind"删除它的参考.

del somemastermind.roaches[n]
Run Code Online (Sandbox Code Playgroud)