Bonsoir à tous,
Pour répondre à Jean-François qui demandait plutôt du concret, je joins un exemple d'utilisation des décorateurs, trouvé sur le Net.
Les fichiers à lancés sont utilisation1.py et utilisation2.py.
Ce que dit l'auteur:
>Pendant le développement, il est souvent utile de savoir combien de >fois une fonction ou une méthode est appelée, ainsi que de connaitre >les durées des traitements. >Certains outils de développement peuvent donner des infos comme ça, >mais il est facile de fabriquer son propre outil en Python: >Pour cela, on utilisera les décorateurs, qui “enveloppent” les >fonctions et méthodes décorées en permettant d'intervenir avant et >après les appels.

Cet exemple montre assez bien que cela n'a absolument rien avoir avec l'héritage, le clonnage ou lla dérivation. C'est bel et bien, un encadrement d'objet, sans toucher l'objet. C'est pas aussi loin que cela de la décoration.

Amitiés.
Paul.

Le 27/12/2013 12:25, Yannick Youalé a écrit :
Salut Lavachri !

Moi également je ne connaissais pas le sens de cette notion du langage
python. Merci de nous l'avoir expliqué.

Cependant, maintenant que je suis au courant, je suis également frappé par
le fait que le mot 'decorator' me semble toujours si peu approprié pour
traduire cette notion.

Peut-etre que si le terme 'héritage' était déja pris, ils auraient pu
choisir autre chose comme par exemple 'derivative' (le dérivé) ou 'retort'
(la réplique) ou meme encore 'clone' (le clone) pour la nommer. Et c'aurait
été plus précis.

Cela peut parraitre anodin, je trouve, mais en matière de programmation, la
compréhension d'une notion passe d'abord par la pertinence du terme choisi
pour la représenter.

Enfin, ce n'est que mon avis de bigleux qui se mèle un peu trop de ce qui ne
le regarde pas.

Et toc !

Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.






----- Original Message -----
From: "LavaChri"<[email protected]>
To:<[email protected]>
Sent: Friday, December 27, 2013 11:37 AM
Subject: [progliste] Re: Python et decorators


Slt, sans être un expert dans les Design Pattern, voici l'idée générale.

Comme dans toute activité, en programmation on retombe souvent sur les
même
problème.
Les design pattern décrivent des méthodes, des solutions, des façon de
procéder, ...
Le fait de nomer les choses permèt de faciliter les échanges, les
discutions, la modélisation, ...

Par exemple, si l'on te demande d'utiliser un sinbleton pour la connexion
à
une librairie. Il faudra que tu crée une classe ne permètant d'instancier
qu'un seul et unique objet. En fonction du langage l'écriture de ce code
sera plus ou moins complexe mais tu trouveras des exemples facilement en
recherchant le mot singleton.

Le decorator est une façon de permètre de faire évoluer le comportement
d'une classe sans toucher à son code interne.
Par exemple tu crée une classe décrivant la composition d'un sandwich à
partir de pain, beurre et jambon.
Si tu veux pouvoir modifier les ingrédients tu peux le faire directement
dans la classe, par exemple en créant une méthode qui change le pain en
Toast. Cela implique d'avoir les droits de modifier la classe et les
risques
de se greffer à un code déjà existant.

Ou, utiliser des décorateurs.
Dans ce cas la classe de base ne sera plus modifié.
Et tu pourra écrire plus facilement, ou faire écrire par d'autres
programmeurs en même temps, des classe "décoratrice" de la classe de base
car son comportement réstera fixe et connu.


--Message d'origine-----
De : [email protected] [mailto:[email protected]] De la
part de Jean-François Colas
Envoyé : jeudi 26 décembre 2013 15:05
À : [email protected]
Objet : [progliste] Python et decorators

Hello la ML,

J'ai un peu de mal avec cette notion, pas tellement dans son principe,
encore que, mais surtout dans la manière dont elle s'implémente en
Python. La faute aux docs dans lesquelles les indentations sont perdues...

Qui pourrait élaborer un petit exemple, de préférence utilitaire, du
moins didactique, pour illustrer ce mécanisme?

Qu'est-ce que je crois avoir compris à ce jour?
Même s'il semble que cette notion rentre plutôt dans la programmation
objet et les fameux "design patterns", je ne reste qu'au niveau d'une
simple fonction: cette fonction pourrait être encapsulée dans une autre,
fonction "décoratrice", pas tellement en vue de lui mettre du fard sur
les yeux ou une jolie cravate, mais pour, entre autres possibilités,
filtrer les données qui pourraient arriver à cette fonction...

Comme vous voyez, ça ne va pas bien loin. Aussi,  toutes précisions qui
peuvent entrer dans un message de maililing-list seront bienvenues...

Merci,
J.-F.

Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/

Je vous rappelle que les pièces jointe sont activés leur taille est limité
à
2 MO

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé,
je
vous répondrez en privé.



Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/

Je vous rappelle que les pièces jointe sont activés leur taille est limité
à 2 MO

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé,
je vous répondrez en privé.




Progliste :
Pour se désinscrire de la liste : 
mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/       

Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 
MO

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je 
vous répondrez en privé.
        
        

<<attachment: les_d__corateurs_exemple.zip>>

Répondre à