Seite 1 von 1

Feststellen ob Object besteht?

Verfasst: Mittwoch 13. Juni 2007, 17:26
von wdsl
Hi,
kann man irgendwie feststellen ob ein Objekt besteht ohne darauf zuzugreifen?

Beispiel ich erstelle eine Objekt in Abhängigkeit eines Objekts
Bei einem anderen Ereignis muss ich darauf zugreifen allerdings geht das nur wenn das andere Besteht.

Gibt es dafür eine Methode?

vielen Dank
wdsl

Verfasst: Mittwoch 13. Juni 2007, 17:39
von BlackJack
Auf Objekte die nicht existieren kann man auch nicht zugreifen.

Kann es sein, dass Du einen Namen zum Beispiel an `None` binden möchtest und später an ein anderes Objekt? Dann kann man überprüfen, ob der Name noch an `None` gebunden ist, oder schon an ein Objekt mit dem man etwas mehr anstellen kann.

Ansonsten bitte ein Beispiel.

Verfasst: Mittwoch 13. Juni 2007, 18:02
von mitsuhiko

Code: Alles auswählen

try:
    from foo.bar import Baz
except ImportError:
    objekt gibts nicht

try:
    Bar
except NameError:
    objekt gibts nicht

Verfasst: Mittwoch 13. Juni 2007, 18:38
von wdsl
Hi,
habs hinbekommen habs jetzt mit

Code: Alles auswählen

except AttributeError:
gemacht da es ein Object in einer Klassen ist.

mfg
wdsl

Verfasst: Mittwoch 13. Juni 2007, 19:21
von Y0Gi
Das wäre dann ein/e Objekt-/Instanz-Attribut/-Variable. Deswegen auch AttributeError.

Re: Feststellen ob Object besteht?

Verfasst: Mittwoch 13. Juni 2007, 20:49
von Michael Schneider
wdsl hat geschrieben:Hi,
kann man irgendwie feststellen ob ein Objekt besteht ohne darauf zuzugreifen?

Beispiel ich erstelle eine Objekt in Abhängigkeit eines Objekts
Bei einem anderen Ereignis muss ich darauf zugreifen allerdings geht das nur wenn das andere Besteht.

Gibt es dafür eine Methode?
Hi!

Hmm, klingt verwirrend, aber für mich irgendwie nach einem simplen vars?

Code: Alles auswählen

>>> vars()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None}
>>> print "l" in vars()
False
>>> l = 15
>>> vars()
{'__builtins__': <module '__builtin__' (built-in)>, 'l': 15, '__name__': '__main__', '__doc__': None}
>>> print "l" in vars()
True
Geht auch mit jedem anderen Objekt als dem globalen Namespace per "vars(Obj)"

Grüße,
Michael