Аспектно-ориентированное программирование (AOP) в Python - программирование
Подтвердить что ты не робот

Аспектно-ориентированное программирование (AOP) в Python

Возможный дубликат:
Любая библиотека поддержки AOP для Python?

Я знаком с расширением AspectJ для языка Java.

Я хочу знать, есть ли такая вещь для Python.

Не поймите меня неправильно, я не имею в виду библиотеку, но расширение языка, например AspectJ, относится к Java.

4b9b3361

Ответ 1

Python не нуждается в чем-то вроде "языкового расширения" для возможности работать в аспекте Ориентированным способом.

Это просто из-за динамических механизмов в самом Python. Поиск в Google даст несколько проектов - но, несмотря на то, что они выглядят просто как библиотеки, все это необходимо в Python.

Я этого не делаю - это факт, что вы можете исследовать классы и методы и изменять их во время выполнения. Когда я впервые узнал об ориентации Aspect, я мог бы реализовать несколько доказательств концепций в Python через пару часов - конечно, некоторые из существующих проектов могут предлагать качественные записи.

Но поскольку вы спросили, существует ли языковое расширение Python, которое может использоваться для ориентации Aspect: когда я сделал доказательство концепции, о которой я упоминал выше, я использовал проверку входных параметров на методы во время выполнения чтобы определить, повлияет ли на определенные методы правило или нет.

В Python 3 есть небольшая известная особенность языка, которая позволяет аннотировать входные параметры и возвращаемое значение функции или метода. Библиотека ориентации ориентации могла бы использовать это, чтобы применить свою магию в "время загрузки", а не во время каждого вызова функции.

Кстати, вот мой быстрый хак, чтобы получить рабочий пример использования ориентации Aspect с Pure Python. Извините - комментарии коментариев находятся в pt_BR - https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py