从lis中删除未引用的对象

2024-04-19 23:11:37 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:已解决。谢谢你的帮助,但问题是列表被重写并转换成精灵组,使得所有的列表操作都变得毫无用处。在

我最近开始用python编程(总是会敲响警钟),所以如果我编写代码的方式有点吓人,我道歉。这个特定的程序导入pygame(使用的“引擎”)。在

我试图创建一个包含对象/精灵的列表。我似乎已经做到了,但是,一旦不再需要某个对象,我就无法从该列表中删除该对象,因为据我所知,该对象没有特定的指针。在

sprite类的构造如下:

class Point(pygame.sprite.Sprite):
    def __init__(self,pos=(0,0)):
        pygame.sprite.Sprite.__init__(self)

        #Unimportant code

        self.dead=False
        print self
        #This prints; "<Point sprite(in 0 groups)>"

    def update(self):
        if(self.dead):
            #sprList_PointSet.remove(?)
            pass

创建对象和列表

^{pr2}$

在没有明显内存指示器的情况下,是否可以使用.remove(x)从列表中删除不再需要的实例?如果没有的话,有人能推荐一个更好的方法吗。在


Tags: 对象self编辑列表initdef编程pygame
2条回答

^{cd1>}指向要删除的对象,所以只需^{{cd2>}:

def update(self):
    if self.dead:
        try:
            sprList_PointSet.remove(self)
        except ValueError:
            pass

^{cd3>}定义为mutable sequences,并描述in the tutorial

Remove the first item from the list whose value is x. It is an error if there is no such item.

您可以使用weak references让一个实例在没有任何“重要”需要时消失。在

相关问题 更多 >