programacion - Programación orientada a aspectos(AOP) en Python
programacion orientada a funciones (2)
Puedes usar Spring Python
Enlace: http://docs.spring.io/spring-python/1.2.x/sphinx/html/aop.html#aspect-oriented-programming
Posible duplicado:
¿Alguna biblioteca de soporte de AOP para Python?
Estoy familiarizado con la extensión AspectJ
para el lenguaje Java.
Quiero saber si existe algo así para Python.
No me malinterpretes, no me refiero a una biblioteca sino a una extensión de lenguaje como AspectJ
es Java.
Python no necesita algo como una "extensión de lenguaje" para poder trabajar de una manera orientada a aspectos.
Eso es simplemente debido a los mecanismos dinámicos en Python. Una búsqueda en Google producirá un par de proyectos, pero a pesar de que se parecen simplemente a bibliotecas, es todo lo que se necesita en Python.
No estoy inventando esto: es el hecho de que puede realizar una introspección de clases y métodos, y cambiarlos en tiempo de ejecución. La primera vez que aprendí sobre Orientación de Aspecto, pude implementar algunas pruebas de conceptos en Python en un par de horas; ciertamente, algunos de los proyectos existentes pueden ofrecer entradas de calidad de producción.
Pero como pidió, hay una "extensión de lenguaje" de Python que podría usarse para Orientación de Aspecto: cuando hice la prueba de concepto que mencioné anteriormente, solía verificar los parámetros de entrada de los métodos en tiempo de ejecución para determinar si Ciertos métodos se verían afectados por una regla o no.
En Python 3 hay una característica poco conocida del lenguaje que permite anotar los parámetros de entrada y el valor de retorno de una función o método. Una biblioteca de orientación de aspecto podría hacer uso de esto para aplicar su magia en "tiempo de carga", y no en el momento de cada llamada de función.
Por cierto, aquí está mi truco rápido para obtener un ejemplo funcional del uso de Orientación de Aspecto con Pure Python. Lo sentimos, los comentarios del código están en pt_BR - https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py