Seite 1 von 1

Objekte in Liste

Verfasst: Mittwoch 22. Januar 2003, 14:23
von akIra
Heya,
ich habe eine Klasse Mitarbeiter:

Code: Alles auswählen

class Mitarbeiter:
    def __init__(self):
        self.Name = ""
        self.Privat = ""
        self.Handy = ""
        self.Anderes = ""
Dann habe ich eine Methode die mir eine Liste aus Objekten des Typs Mitarbeiter zusammenstellt:

Code: Alles auswählen

def Open_TBK(self, FName):
        Liste = []
        #Datei lesen
        while 1:
            a = TBF.readline()
            if not a:
                TBF.close
                break
            if a[:1] == "@":
                Liste.append(Mitarbeiter())
                Liste[-1:].Name(a[1:])
            elif a[:5]=="Handy":
                Liste[-1:].Handy = a[6:]
            elif a[:6]=="Privat":
                Liste[-1:].Privat = a[7:]
            elif a[:7]=="Anderes":
                Liste[-1:].Anderes = a[8:]
            else:
                #...
        return Liste
Das append geht, aber die Zuweisung darunter:
->Liste[LetzterEintrag].Name = XY
liefert nur nur die Exception:
AttributeError: 'list' object has no attribute 'Name'

Ich habe auch schon versucht mir die Klasse Mitarbeiter anders zu gestallten:

Code: Alles auswählen

class Mitarbeiter:
    def __init__(self):
        self.Name = ""
        self.Privat = ""
        self.Handy = ""
        self.Anderes = ""
    
    def SetName(Name):
        self.Name = Name
        
    def SetPrivat(self, PrivatNr):
        self.Privat = PrivatNr
        
    def SetHandy(self, HandyNr):
        self.Handy = HandyNr
        
    def SetAnderes(self, Anderes):
        self.Anderes = Anderes
Aber genau dass selbe passiet nur dass er jetzt die Methode nicht findet...
Dass ist wahrscheinlich ein recht wichtiger programmiertechnischer Bereich, aber aus den deutschen Tut´s konnte ich nix erschliessen :cry:

Ciao,
aki

Verfasst: Mittwoch 22. Januar 2003, 14:57
von ASCII158
Liste[-1:] liefert immer eine Liste zurück.
du musst Liste[-1:][0] einsetzen...

Verfasst: Mittwoch 22. Januar 2003, 15:15
von akIra
doh :shock: , merci

Verfasst: Mittwoch 22. Januar 2003, 16:54
von Dookie
Hi,

oder einfach Liste[-1] ohne Doppelpunkt! Liefert das letzte Element der Liste.

Bei Deiner 2. Version von Mitarbeiter haste bei def SetName(... den Parameter self vergessen!

Gruß

Dookie