• [^] # Re: un cardriciel...

    Posté par . En réponse au journal Python et PyQt. Évalué à 2.

    Le module pickle te permet de sérialiser/désérialiser directement des objets (yc ompris des objets complexes genre listes hash, ... ), c'est à dire de les enregistrer/récupérer simplement sans prévoir de code à cet effet.

    dans ta classe carnet


    class carnet:
    def __init__(self,filename):
    self.clients = []
    # restauration du carnet de client depuis le fichier "filename"
    f=open(filename,'r')
    sellf.clients =pickle.load(f)
    f.close()

    def sauver(self):
    f = file(self.filename,'w')
    pickle.dump(self,f)
    f.close()


    dans ta classe client tu vires la méthode sauver

    plus d'info ici sur pickle
    http://www.python.org/doc/2.4.2/lib/module-pickle.html(...)
    Là ou ca se complique c'est lorsque tu veux sérialiser plusieurs objets avaec des références croisées.
    Il faut veiller à avoir un seul point d'entrée donc une strucure englobante.
    Inconvénient tu enregistres à chaque fois la totalité de ton conteneur au lieu de n'enregistrer que ce qui change.
    L'étape d'après c'est les bases de données mais pour un tuto ou un hack su le coin de la table c'est bien pratique

    D'une manière générale n'hésite pas à piocher ici avant de te lancer dans le code
    http://www.python.org/doc/2.4.2/modindex.html(...)

    Pour les listes en compréhension tout est expliqué sur le tutoriel de Guido
    http://www.python.org/doc/2.4.2/tut/node7.html#SECTION0071400000000(...)