Hallo, folgendes Problem: Ich habe ein Klasse, deren Objekte in einer sortierten Liste gehalten werden. Die Liste ist in der Basisklasse als Klassenattribut definiert. Wenn ich nun ein instanziertes Objekt dieser Klasse mit 'del' lösche, wird der Destruktor (darin würde ich gerne die Objektreferenz aus der Liste löschen) nicht aufgerufen, da ja in Liste noch eine Referenz auf dieses Objekt besteht. Als Workaround hab ich eine Methode 'remove' erstellt, die erst das Objekt aus der Liste entfernt. Anschliessend kann ich mit del das Objekt löschen. Das gefällt mir garnicht... Gibt es eine Möglichkeit, eine Referenz auf eine Objekt in der Liste abzulegen, ohne den Python-internen Objekt-Referenzzähler zu berühren? (Sorry, falls das eine FAQ ist, aber ich bin absoluter Python Newbie) ################################################################################ class GOb: __olist=[] def c_show_all(): for i in GOb.__olist: i.show() def __c_add__(gob): GOb.__olist.append(gob) GOb.__olist.sort() def __c_remove__(gob): GOb.__olist.remove(gob) c_show_all=staticmethod(c_show_all) __c_add_=staticmethod(__c_add__) __c_remove_=staticmethod(__c_remove__) def __init__(self, name="GOB", priority=0): self.priority=priority self.name=name GOb.__c_add__(self) # WORKAROUND? def remove(self): GOb.__c_remove__(self) # SO GEHTS NICHT # def __del__(self): # print "destruktor called fuer " + self.name # GOb.__c_remove__(self) def show(self): print self.name + " " + str(self.priority) def __cmp__(self, other): if self.priority < other.priority: return -1 elif self.priority == other.priority: return 0 else: return 1 if __name__ == '__main__': a=GOb("T1", 0) b=GOb("T2", 2) c=GOb("T3", 1) print "--- ALLE ---" GOb.c_show_all() print "--- DELETED SOME ---" a.remove() del a GOb.c_show_all() ################################################################################ Walter _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de