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

时间:2013-05-22 08:16:55

标签: python class oop

我希望Roach类在达到一定程度的“饥饿”时“死”,但我不知道如何删除该实例。我的术语可能会出错,但我的意思是说窗口上有很多“蟑螂”,我希望特定的东西完全消失。

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

3 个答案:

答案 0 :(得分:20)

一般来说:

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

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

  

CPython目前使用引用计数方案(可选)   延迟检测收集最多的循环链接垃圾   对象一旦无法访问,但无法保证   收集包含循环引用的垃圾。请参阅文档   gc模块中有关控制集合的信息   循环垃圾。其他实现的行为不同,CPython可能   更改。当它们不依赖于物体的立即完成时   变得无法访问(例如:总是关闭文件)。

答案 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的简单命令将删除该实例。