编辑:已解决。感谢大家的帮助,但问题似乎是列表被覆盖并转换为 sprite 组,导致所有列表操作都无用。
我最近开始使用 Python 进行编程(总是敲响警钟),所以如果我的编码方式有点吓人,我深表歉意。此特定程序导入 pygame(正在使用的“引擎”)。
我正在尝试创建一个包含对象/ Sprite 的列表。我似乎已经实现了这一点,但是,一旦不再需要该对象,我就无法从该列表中删除该对象,因为据我所知,该对象没有特定的指针。
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
创建对象和列表;
sprList_PointSet=[]
sprList_PointSet+=[Point((50,90))]
sprList_PointSet+=[Point((65,110))]
# ...
print sprList_PointSet
#This prints; [<Point sprite(in 0 groups)>, <Point sprite(in 0 groups)>, ...]
在没有明显内存指示器的情况下,是否可以使用 .remove(x) 从列表中删除不再需要的实例?如果不是/或/,有人可以推荐一种更好的方法。
最佳答案
您可以使用 weak references让一个实例在“重要的”不再需要它时消失。
关于python - 从列表中删除未引用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896852/