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

Beitrag lesen

Hallo,

in den Quellen, die ich bisher nachgeschlagen habe, wird gesagt, dass beim Aufruf von __init__() in einer Klasse bereits ein Objekt erzeugt worden ist:

"(...) the object has already been constructed by the time __init__ is called, and you already have a valid reference to the new instance of the class."
(< http://diveintopython.org/object_oriented_framework/defining_classes.html#d0e11720>)

oder auch:

"The instantiation operation (``calling'' a class object) creates an empty object. Many classes like to create objects with instances customized to a specific initial state. Therefore a class may define a special method named __init__() ..."
(http://www.python.org/doc/current/tut/node11.html#SECTION0011320000000000000000)

wo zumindest gesagt wird, dass das Objekt mit der Instanziierung erzeugt wird und nicht mit der Methode __init__(). Diese wiederum sorgt nur für den gewünschten Anfangszustand.

Wenn nun also ein Objekt schon vor dem Aufruf der __init__()-Methode existiert, dann würde ich bei folgendem Programm:

---

  
class foo:  
    def __init__(self):  
        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()  
except RuntimeError, strerror:  
    print strerror  
  
foo_object.do_something()  

---

diese Ausgabe erwarten:

Something went wrong
If you see this sentence, then an object was actually created.

Stattdessen kommt aber:

Something went wrong
Traceback (most recent call last):
  File "foo.py", line 12, in <module>
    foo_object.do_something()
NameError: name 'foo_object' is not defined

Wie kommt das?

Viele Grüße
cookie