17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Discussion<br />

if id_ in data:<br />

ob.__dict__ = data[id_]<br />

objects.append(ob)<br />

return ob<br />

def __init__(self, id_):<br />

self._id = id_<br />

# chargement des objets<br />

_load_objects()<br />

# _save_objects sera appelée à la fermeture du programme<br />

atexit.register(_save_objects)<br />

Exercices corrigés<br />

CHAPITRE 11<br />

Au chargement du module, shelve charge les données sauvegardées, puis les rend<br />

disponibles à chaque instance. La classe de base Persistent charge les données sauvegardées<br />

dans son attribut __dict__, puis s’enregistre comme instance.<br />

Lorsque le programme se termine, les données de chaque instance sont sérialisées<br />

grâce à un appel provoqué par atexit.<br />

Exemple de programme utilisateur<br />

from ex10 import Persistent<br />

import random<br />

class MyClass(Persistent):<br />

def some_code(self, value):<br />

self.value = value<br />

test = MyClass('the id')<br />

try:<br />

print('ancienne valeur %s' % test.value)<br />

except AttributeError:<br />

print('ancienne valeur : aucune')<br />

test.some_code(random.randint(1, 1000))<br />

print('nouvelle valeur %s' % test.value)<br />

Chaque instance de MyClass est associée à un identifiant unique, et sérialisée par<br />

shelve.<br />

373

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!