Objekte in Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

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
ASCII158
User
Beiträge: 80
Registriert: Samstag 28. September 2002, 15:40
Wohnort: München

Liste[-1:] liefert immer eine Liste zurück.
du musst Liste[-1:][0] einsetzen...
mfg,

10011110
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

doh :shock: , merci
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
Antworten