Python och klasser, lär mig hjälp önskas!
Postat: 01 feb 2015, 10:06
Hej
Jag har definierat en klass Person som skall ta 3 värden, förnamn, efternamn och adress. Dessa sparas sedan i en lista så att jag kan skapa flera instanser av samma klass. Om jag skriver ut denna lista på en gång så fungerar det korrekt.
Kod:
Nu vill jag spara detta till en fil så att jag kan använda det senare. Det går bra, filen som sparas har värdena i sig om man öppnar den med nano.
Kod:
Nu vill jag läsa in filens innehåll och visa det i shellen, se kod
Kod:
Då får jag upp detta...
Jag har definierat en klass Person som skall ta 3 värden, förnamn, efternamn och adress. Dessa sparas sedan i en lista så att jag kan skapa flera instanser av samma klass. Om jag skriver ut denna lista på en gång så fungerar det korrekt.
Kod:
Kod: Markera allt
# class definitions
class Person(object): # Class for Person object
'''class for handling a person object with first, sure name and adress'''
def __init__(self, fName, sName, adress):
self.fName = fName
self.sName = sName
self.adress = adress
def getForName(self):
return self.fName
def getSurName(self):
return self.sName
def getAdress(self):
return self.adress
def getPerson(self):
return self.fName + " " + self.sName + ", " + self.adress
# Main code
lista = []
for i in range (2):
namn = input("Förnamn: ")
efter = input("Efternamn: ")
adress = input("Adressen: ")
lista.append(Person(namn, efter, adress))
for i in range (len(lista)):
print(lista[i].getPerson())
Kod:
Kod: Markera allt
# Save all to a file
pif = "Person.dat"
with open(pif, "wb") as f:
pickle.dump(lista, f)
f.close()
Kod:
Kod: Markera allt
with open(pif, "rb") as f:
print(pickle.load(f))
f.close()
Hur löser jag så att min metod getPerson() anropas så att det skrivs ut korrekt ur listan? Eller har jag missförstått pickle funktionen så att det inte går att spara en instans av klassen Person?[<__main__.Person object at 0x0000000003D28F60>, <__main__.Person object at 0x0000000003D320B8>]