
Albert Hermeling wrote:
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:
AttributeError: 'Newset' object has no attribute 'liste'
Laut Sourcen verwendet set.__or__() zur Erzeugung des Resultats die Methode copy(). Diese Methode wiederum umgeht den normalen Konstruktor, weil sie sonst nicht ein Newset, sondern nur ein normales set erzeugen könnte. Damit dein Beispiel so funktioniert, wie du das erwartest, solltest du also auch copy() mit einer eigenen Version überschreiben. In der Doku habe ich auf die Schnelle auch nichts gefundne, was auf diesen Umstand hinweist. -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de