17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Python pour quels usages ?<br />

CHAPITRE 2<br />

rage. Le principe de sérialisation est aussi très utile dans des programmes distribués.<br />

Ce mécanisme fonctionne pour tous les objets Python à quelques exceptions, comme<br />

nous le verrons dans le chapitre 9.<br />

Exemple de sérialisation d’un objet<br />

# -*- coding: utf8 -*import<br />

cPickle<br />

class MyClass:<br />

value_1 = '1'<br />

value_2 = 5<br />

# création d'un objet<br />

example = MyClass()<br />

example.value_1= u'je suis modifié'<br />

# sauvegarde<br />

with open('MyClass.sav', 'wb') as file_:<br />

cPickle.dump(example, file_, 1)<br />

# rechargement<br />

with open('MaClasse.sav', 'rb') as file_:<br />

new_example = cPickle.load(file_)<br />

# vérification des valeurs<br />

print(new_example.valeur_1)<br />

print(new_example.valeur_2)<br />

Ce système, appelé pickling, peut être utilisé pour les besoins de sauvegarde de tout<br />

type de programme, mais il impose un certain nombre de contraintes au développeur.<br />

Une des problématiques les plus importantes est que ce fonctionnement<br />

introduit une dépendance forte entre le code et les données : si ce système est utilisé<br />

pour des sauvegardes durables, toute modification des attributs d’une classe rend les<br />

sauvegardes précédentes caduques. Les évolutions du code sont donc plus complexes<br />

à gérer. Une bonne pratique consiste donc à ne sauvegarder que des instances de<br />

classes ou de types de Python ou de sa bibliothèque standard.<br />

Quoi qu’il en soit, dans le cas d’une application de gestion qui travaille avec des données<br />

qui peuvent provenir d’autres sources et dont le format est imposé, on optera<br />

pour un stockage plus classique.<br />

27

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

Saved successfully!

Ooh no, something went wrong!