in den letzten Tagen habe ich mir ein grundlegendes Verstaendnis erarbeitet, was Klassen machen und wofuer sie gut sind. Nun versuche ich ein Beispiel aus einem Buch nachzuvollziehen, aber irgendwo muss ein Fehler sein, denn die Anwendung funktioniert nicht. Mit ist klar, was die Klasse macht, sie erweitert eingebaute Objekttypen, huellt ein Listenobjekt ein und exportiert Methoden zum Einfuegen und Loeschen, die die Liste bearbeiten. Aber wenn ich mir zwei Listen erstelle, und die Klasse mit ihren Methoden darauf anwenden will, kommen diverse Fehlermeldungen. Kann mir jemand sagen, was daran falsch ist?
Code: Alles auswählen
[code=]
class Set:
def __init__(self, value = []):
self.data = []
self.concat(value)
def intersect(self, other):
res = []
for x in self.data:
if x in other:
res.append(x)
return Set(res)
def union(self, other):
res = self.data[:]
for x in other:
if not x in res:
res.append(x)
return Set(res)
def concat(self, value):
for x in value:
if not x in self.data:
self.data.append(x)
def __len__(self): return len(self.data)
def __getitem__(self, key): return self.data[key]
def __and__(self, other): return self.intersect(other)
def __or__(self, other): return self.union(other)
def __repr__(self): return 'Set:' + `self.data`
Wenn ich nun
Code: Alles auswählen
x = Set([1,2,3,4])
und
y = Set([3,4,5])
"Set instance has no attribut 'concat'"
wenn ich den ersten Teil der Klasse dahingehend veraendere:
Code: Alles auswählen
class Set:
def __init__(self, value = []):
self.data = value