banniere.png

Exercice 09 - rendre persistants tous les objets d'un programme

#!/usr/bin/python
# -*- coding: ISO-8859-15 -*-
import shelve
import atexit

donnees = None
instances = []?

def _charge_objets():
    print 'chargement...'
    global donnees
    donnees = shelve.open('objets.bin')

def _sauvegarde():
    print 'sauvegarde...'
    global donnees

    for instance in instances:
        donnees[instance.getId()]? = instance.__dict__

    if donnees is not None:
        donnees.close()
        donnees = None

class Persistent(object):

    def __init__(self, id):
        global donnees
        if id in donnees:
            self.__dict__ = donnees[id]?
        else:
            self._id = id
        instances.append(self)

    def getId(self):
        return self._id

# chargement des objets
_charge_objets()

# _sauvegarde sera appelée à la fermeture du programme
atexit.register(_sauvegarde)

Tarek Ziadé. Copyright 2006. Tous droits réservés. Licence contenu site