PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Python Objekt "zerstören", wenn man im Konstruktor ist


rotalever
2007-12-22, 22:19:58
Guten Abend!
Ich hab mal wieder ein Problem und konnte mit Google nichts finden. Wenn ich bei Python eine Klasse erstelle und einen Konstruktor habe und der Konstruktor merkt, dass eine der übergebenen Variablen falsch ist, dann soll das Objekt nicht erzeugt werden. Ich hatte gedacht, es ginge vielleicht so:

class tannenbaum:
def __init__ (self, kerzen):
if kerzen == 0:
return None
self.kerzen = kerzen

o = tannenbaum (0)
if o == None:
print "Fehler."

Aber hier wird natürlich kein Fehler ausgegeben, da auch kein "None" zurückgegeben wird, da ein return im Konstruktor anscheined wertlos ist, da ja immer ein Objekt zurückgegeben wird.
Also, wie informiere ich das Hauptprogramm, dass kein Tannenbaum erstellt werden kann? "return False" würde natürlich eine exception ergeben, die ich dann wiederrum im Hauptprogramm mit try abfangen könnte und somit informiert wäre, aber das ist ein wenig blöd.

HellHorse
2007-12-22, 22:42:17
Warum kannst du keine Exception schmeissen?

rotalever
2007-12-22, 23:09:37
Warum kannst du keine Exception schmeissen?
Also einfach ein "raise" reinhauen?

Marscel
2007-12-22, 23:18:23
class blub(object):

def __init__(self, int):
if int == 0:
raise
else:
print "Ja"

try:
a = blub(0)
except:
print "Nein"

Kannst auch eigene Exceptions basteln.

rotalever
2007-12-22, 23:25:06
[..]Kannst auch eigene Exceptions basteln.
Jo danke. Mit eigenenen Exceptions weiß ich, aber brauche ich hier nicht. Funktioniert jetzt alles wunderbar.
Gute Nacht!