Klasseninstanzen löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
newb

Donnerstag 24. Juli 2003, 15:46

Hallo,

Kann mir einer sagen, wie ich die Instanzen einer Klasse lösche und somit den Destruktor auslöse?

Gruß
Ansgar

p.s: Das stand in keinem meiner Bücher
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Donnerstag 24. Juli 2003, 16:33

newb hat geschrieben:Kann mir einer sagen, wie ich die Instanzen einer Klasse lösche und somit den Destruktor auslöse?
Mit del(). Damit löschst Du zwar nicht die Instanz direkt, aber zumindest eine Referenz auf eine Instanz (unbind). Wenn's die einzige Referenz auf die Instanz war, wird Instanz dann auch (bei Gelegenheit) vom Garbage Collector gelöscht.
Jan
Qbi
User
Beiträge: 57
Registriert: Mittwoch 25. Juni 2003, 14:04
Kontaktdaten:

Donnerstag 24. Juli 2003, 17:50

newb hat geschrieben:Kann mir einer sagen, wie ich die Instanzen einer Klasse lösche und somit den Destruktor auslöse?
In Python kannst du keine Instanz löschen. Hier hast du einen Garbage Collector. Wenn keine Referenzen vorhanden sind, führt der die __del__ Methode aus und gibt den belegten Speicher frei.
Jens Kubieziel http://www.kubieziel.de
http://www.kubieziel.de/pythonwiki/
newb

Donnerstag 24. Juli 2003, 21:56

Das find ich aber schlecht, denn ich wollte über Klassen ein Spiel erstellen.
In dem Spiel wollte ich die Einheiten als Instanzen der jeweiligen Klassen benutzen. Aber da man Klasseninstanzen nicht so löschen kann erkennt der Computer erst dann das die Einheit "tot" ist, wenn jede Einheit dieses Typs "tot" ist.
:?: :?: :?: :?: :?: :?: :?: :?: :?:

Gruß
Ansgar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 24. Juli 2003, 22:51

Hi Ansgar,

hmm gib der Klasse doch ein attribut "lebt" und setze das im falle des Ablebens auf 0, dann kannst abfragen

Code: Alles auswählen

if Einheit.lebt:
    ... mach was der lebt noch ...
else:
    ... hohl den Totengräber, der is hinüber ...

Gruß

Dookie
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

Freitag 25. Juli 2003, 09:53

Toll jetzt hab ihr den newb wieder so überrumpelt, der wird kein Programmierer mehr :wink:
[i]...und ich glaube ich habe eine Zwei gesehen[/i]
newb

Dienstag 29. Juli 2003, 18:43

Glaub ich auch net @ akira

Aber Dookies vorschlag ist schon gut

Gruß
Ansgar
Antworten