Enumerator
Mitglied Kamel
Hi!
Aus Spaß an der Freude dacht' ich mir heute zum Feierabend: "...was soll's? Lernst' halt Python..".
Bin auch recht fix voran gekommen, allerdings bereitet mir die OOP etwas Kopfzerbrechen: Vielleicht kann mir jemand mal erklären warum im folgenden der (vererbte) Destruktor der Klasse "Person" nicht aufgerufen wird?
Bzw. warum Sätze wie "John Lennon stirbt." und "Ringo Starr lebt aber noch!" nicht ausgegeben werden?
Die auskommentierte Zeile 24 wirft einen sehr abenteuerlichen Fehler den ich zwar verstehe --
dennoch überrascht es mich das das nicht die Lösung des o.g. Problems ist, zumal es im Konstruktor funktioniert..
Dank und Gruß
Enum
Aus Spaß an der Freude dacht' ich mir heute zum Feierabend: "...was soll's? Lernst' halt Python..".
Bin auch recht fix voran gekommen, allerdings bereitet mir die OOP etwas Kopfzerbrechen: Vielleicht kann mir jemand mal erklären warum im folgenden der (vererbte) Destruktor der Klasse "Person" nicht aufgerufen wird?
Bzw. warum Sätze wie "John Lennon stirbt." und "Ringo Starr lebt aber noch!" nicht ausgegeben werden?
Python:
#!/usr/bin/env python
# coding=UTF-8
import sys
echo = sys.stdout.write
class Person:
def __init__(self, name):
self.name = name
print self.__class__._Artikel, self.__class__.__name__, self.name, self.__class__._Entsteht
def __del__(self):
print self.__class__._Artikel, self.__class__.__name__, self.name, self.__class__._Verschwindet
def sagt(self, nachricht):
sys.stdout.write(self.name)
print "sagt:", nachricht
Person._Entsteht = "entsteht."
Person._Verschwindet = "veschwindet."
Person._Artikel = "Die"
class Mensch(Person):
def __del__(self):
print self.name, "geht's nicht gut..."
# Person.__del__(self)
Mensch._Entsteht = "wird geboren."
Mensch._Verschwindet = "stirbt."
Mensch._Artikel = "Der"
class Musiker(Mensch):
pass
namen = [ "Stuart Sutcliffe", "Ringo Starr", "John Lennon", "Pete Best",
"Paul McCartney", "George Harrison" ]
musiker = {}
for iter in range(len(namen)):
musiker[namen[iter]] = Musiker(namen[iter])
reihenfolge = (0, 2, -1)
for iter in reihenfolge:
del musiker[namen[iter]]
Mensch._Verschwindet = "lebt aber noch!"
dennoch überrascht es mich das das nicht die Lösung des o.g. Problems ist, zumal es im Konstruktor funktioniert..
Dank und Gruß
Enum