web-dev-qa-db-fra.com

Programmation orientée orientée (AOP) In Python

Dupliquer possible:
[.____] toute bibliothèque de support AOP pour Python?

Je connais bien l'extension AspectJ pour le Java Langue.

Je veux savoir s'il y a une telle chose pour Python.

Ne vous méprenez pas, je ne veux pas dire une bibliothèque mais une extension de langue comme AspectJ est à Java.

25
coredump

Python n'a pas besoin de quelque chose comme une "extension de langue" pour pouvoir fonctionner de manière axée sur l'aspect.

Cela est simplement dû aux mécanismes dynamiques de Python =. Une recherche Google donnera quelques projets - mais malgré simplement la recherche de bibliothèques, c'est tout ce qui est nécessaire à Python.

Je ne fais pas cela - c'est le fait que vous puissiez intrusion de cours et de méthodes et de les modifier au moment de l'exécution. Lorsque j'ai appris d'abord sur l'orientation de l'aspect, je pourrais mettre en œuvre une preuve de concepts dans Python dans quelques heures - certains des projets existants peuvent certainement proposer des entrées de qualité de production.

Mais depuis que vous avez demandé, il y a un Python "Extension de langue" de Tries pouvant être utilisée pour l'orientation de l'aspect: lorsque j'ai fait la preuve du concept, j'ai mentionné ci-dessus, je vérifiais les paramètres d'entrée. aux méthodes au moment de l'exécution pour déterminer si certaines méthodes seraient affectées par une règle ou non.

IN Python 3 Il existe une caractéristique peu connue de la langue qui permet d'annoter les paramètres d'entrée et de la valeur de retour d'une fonction ou d'une méthode d'orientation pourrait utiliser ceci pour appliquer sa Magie à la "période de chargement", et non au moment de chaque appel de la fonction.

BTW, voici mon hack rapide pour obtenir un exemple de travail d'utilisation de l'orientation de l'aspect avec python pur. Désolé - les commentaires du code sont dans pT_BR - https://bitbucket.org/jsbueno/metéthon/src/f48d6bd388fd/aspect.py

36
jsbueno
4
Aghilas Yakoub