Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 28 jan 2021, 13:50



Svara på tråd  [ 3 inlägg ] 
 Python och klasser, lär mig hjälp önskas! 
Författare Meddelande
Användarvisningsbild

Blev medlem: 01 aug 2007, 07:40
Inlägg: 160
Ort: Ornsköldsvik
OS: Annat GNU/Linux
Svara med citat
Inlägg Python och klasser, lär mig hjälp önskas!
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:
Kod:
# 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())


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:
Kod:
# Save all to a file
pif = "Person.dat"
with open(pif, "wb") as f:
    pickle.dump(lista, f)
f.close()


Nu vill jag läsa in filens innehåll och visa det i shellen, se kod
Kod:
Kod:
with open(pif, "rb") as f:
    print(pickle.load(f))
f.close()


Då får jag upp detta...
Citat:
[<__main__.Person object at 0x0000000003D28F60>, <__main__.Person object at 0x0000000003D320B8>]


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?


01 feb 2015, 09:06
Profil WWW
Användarvisningsbild

Blev medlem: 05 apr 2008, 23:09
Inlägg: 5685
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: Python och klasser, lär mig hjälp önskas!
Jag har alltid använt mig av typ f.read() och f.write(), pickle har jag för mig att det mer har att göra med att spara hela objektet istället för att spara någon specifik data...

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


01 feb 2015, 22:47
Profil WWW
Användarvisningsbild

Blev medlem: 18 aug 2006, 09:45
Inlägg: 1172
Ort: Umeå
OS: Kubuntu
Svara med citat
Inlägg Re: Python och klasser, lär mig hjälp önskas!
Så här kan du komma åt din data.
Kod:
with open(pif, "rb") as f:
    lstOfPersons = pickle.load(f)

#print(lstOfPersons[0].getPerson())
for pers in lstOfPersons:
    print(pers.getPerson())


EDIT: Såg just att jag var ett år försen med svaret ;D

_________________
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/


03 feb 2016, 19:03
Profil
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 3 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011