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 decoratorsSlt, 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>>
