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.

512<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Le code est basé sur le module copy, qui recopie le contenu de __dict__. Cette technique<br />

entraîne donc les mêmes limitations que Borg pour les new-style classes.<br />

Il est possible d’implémenter une méthode __deepcopy__() dans la classe. Elle<br />

impactera directement le fonctionnement du decorator, ce qui peut être relativement<br />

intéressant pour filtrer les données sauvegardées pendant la transaction.<br />

Utilisation du decorator<br />

except:<br />

set_memento(objet, etat)<br />

raise<br />

return capsule<br />

class M(object):<br />

def __init__(self):<br />

def o():<br />

print('OK')<br />

self.a = 12<br />

self.b = ['a', 32]<br />

self.l = o<br />

@transaction<br />

def run(self):<br />

self.b.append('c')<br />

self.o = 12<br />

self.a = '14'<br />

self.a += 1<br />

objet = M()<br />

try:<br />

objet.run()<br />

except TypeError:<br />

pass<br />

print(objet.a)<br />

print(objet.b)<br />

objet.l()<br />

[...]<br />

[tziade@Tarek Desktop]$ python memento.py<br />

12<br />

['a', 32]<br />

OK

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

Saved successfully!

Ooh no, something went wrong!