[Python-de] obj.xyz <> obj['xyz']
Andreas Jung
lists at andreas-jung.com
Fr Dez 21 14:41:33 CET 2007
--On 21. Dezember 2007 14:01:35 +0100 "Roland M. Kruggel"
<rk.liste at bbf7.de> wrote:
> hallo liste,
>
> ich habe folgenden classe geschrieben
>
> <code>
> class Ob(object):
> def __init__(self, dic):
> for i in dic.keys():
> setattr(self, i , dic[i])
> def __repr__(self):
> return str(self.__dict__)
> def __getitem__(self, key):
> return self.__dict__.get(key,None)
> def __setitem__(self, key, value):
> setattr(self, key, value)
> def __delitem__(self, key):
> del self.__dict__[key]
> def __len__(self):
> return len(self.__dict__)
> def __iter__(self):
> return self.__dict__.iterkeys()
> def keys(self):
> return self.__dict__.keys()
> def has_key(self, key):
> return self.__dict__.has_key(key)
> </code>
>
> aufrufen tue ich das ganze mit
> xy = Ob({'aa':'a1', 'bb':'b1'})
>
> ich kann somit xy['aa'] nutzen als auch xy.aa. Es funktioniert auch.
>
> aber:
> Wenn ich auf eine undefinierte variable zugreife "xy['undef']" bekomme
> ich, wie gewollt, ein None zurück. Jedoch ein "xx.undef" erzeugt den
> fehler
>
> Traceback (most recent call last):
> File "<string>", line 1, in <string>
> AttributeError: 'Ob' object has no attribute 'undef'
>
> Ein "xx.undef" ruft wohl nicht __getitem__ auf. Wie kann ich das
> lösen?
Dokumentation lesen: __getattr__() wird hier aufgerufen, nicht
__getitem__().
-aj
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 186 bytes
Beschreibung: nicht verfügbar
URL : <http://mail.python.org/pipermail/python-de/attachments/20071221/cd01835b/attachment.pgp>
Mehr Informationen über die Mailingliste python-de