cookie: (PYTHON) Exception in __init__ - Objekt erzeugt oder nicht?

Beitrag lesen

Ah, ich glaube, jetzt mit Deinem Beispiel wirds mir dann doch klar. Also, der Ablauf ist folgender:

Im try-Block wird das Objekt foo_object erzeugt. Danach wird zwangsläufig __init__ aufgerufen. In diesem Moment existiert das Objekt, wie sich ja auch dadurch zeigt, dass in Deinem Beispiel die __init__-Methode die do_something-Methode erfolgreich aufruft.
Dann wird die Exception ausgelöst. Der Python-Interpreter betrachtet den try-Block nun nicht mehr als den auszuführenden Zweig und macht die Anweisung rückgängig, durch die die Exception ausgelöst wurde (das erzeugte Objekt wird vernichtet). Dann wird der except-Zweig ausgeführt.

Stimmt das so?

Viele Grüße
cookie

class foo:
    def init(self,name):
        self.name=name
        self.do_something()
        raise RuntimeError, 'Something went wrong'
    def do_something(self):
        print 'If you see this sentence, then an object was actually created.'

try:
    foo_object = foo('huhu')
except RuntimeError, strerror:
    print strerror