[Python-de] Von der Klasse set() erben

Albert Hermeling Albert.Hermeling at t-online.de
Son Feb 6 19:42:04 CET 2005


Guten Abend,

in Python 2.4 ist es möglich von eingebauten Objekten zu erben, unteranderen
auch von der  Klasse set() (nicht sets.Set!). Ich habe jetzt von der Klasse 
Set folgende neue Klasse Newset abgeleitet:

class Newset(set):
        def __init__(self,):
                set.__init__(self,)
                self.liste =3D []
        def update(self, seg):
                set.update(self,seg)
                for i in seg:
                        if not i in self.liste:
                                self.liste.append(i)

Erzeuge ich jetzt zwei Objekte a und b und fühle sie mit a.update(range(5)) 
bzw. b.update(range(3)) mit Werten, bilde aus a und b die Vereinigungsmenge
in c ( c =3D a | b ) und will dann auf das Attribut liste von c zugreifen 
bekomme ich folgende Meldung:

Traceback (most recent call last):
  File "<pyshell#91>", line 1, in -toplevel-
    print c.liste
AttributeError: 'Newset' object has no attribute 'liste'

Ich kann ja verstehen das sich an der Menge in liste von Objekt c nichts 
ändert, was ich aber nicht verstehe ist, warum das Attribut "liste" nicht mit 
in c übernomen wird. Kann mir einer das erklären? und kann man das irgendwie
erreichen?

Schon mal danke im voraus

mfg

Albert