我希望Roach类在达到一定程度的“饥饿”时“死”,但我不知道如何删除该实例。我的术语可能会出错,但我的意思是说窗口上有很多“蟑螂”,我希望特定的东西完全消失。
我会告诉你代码,但它很长。我将Roach类附加到Mastermind类蟑螂种群列表中。
答案 0 :(得分:20)
一般来说:
有几种常用方法可以减少引用(取消引用对象 - >变量绑定):
del variable
也会删除当前上下文中的引用删除对一个对象的所有引用(counter == 0)后,它成为垃圾收集的良好候选者,但不保证它将被处理(reference here):
CPython目前使用引用计数方案(可选) 延迟检测收集最多的循环链接垃圾 对象一旦无法访问,但无法保证 收集包含循环引用的垃圾。请参阅文档 gc模块中有关控制集合的信息 循环垃圾。其他实现的行为不同,CPython可能 更改。当它们不依赖于物体的立即完成时 变得无法访问(例如:总是关闭文件)。
对象存在多少引用,请使用sys.getrefcount
用于配置/检查垃圾回收的模块是gc
GC会在销毁对象时调用object.__ del__方法(additional reference here)
像字符串这样的一些不可变对象以特殊方式处理 - 例如如果两个变量包含相同的字符串,则它们可能引用相同的对象,但有些不是 - 检查identifying objects, why does the returned value from id(...) change?
对象的id可以通过内置函数id找到
模块memory_profiler看起来很有趣 - 用于监控python程序内存使用情况的模块
该主题有很多有用的资源,例如:Find all references to an object in python
答案 1 :(得分:11)
您不能强制删除Python对象;当没有任何东西引用它时(或者它在循环中仅被称为循环中的项目时)它将被删除。你必须告诉你的“Mastermind”删除它的参考。
del somemastermind.roaches[n]
答案 2 :(得分:1)
In Connection.php line 664:
SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto colu
mn and it must be defined as a key (SQL: create table `purchase_history` (`pur_id` int unsigned not null auto_incre
ment primary key, `pur_item` varchar(255) not null, `pur_date` datetime not null, `bus_name` varchar(50) not null,
`pur_amount` double(10, 2) not null, `cashback_amount` double(10, 2) not null, `bus_id` int not null auto_increment
primary key, `created_at` timestamp null, `updated_at` timestamp null, `remember_token` varchar(100) null) default
character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB)
通过从人口列表中删除实例来删除实例(包含所有漫游实例。
如果您的Roaches是在Pygame中创建的Sprite,那么.kill的简单命令将删除该实例。