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

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

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

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

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

2 Solutions collect form web for “Аспектно-ориентированное программирование (AOP) в Python”

Python не нуждается в чем-то подобном «языковому расширению» для того, чтобы работать в Aspect Oriented.

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

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

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

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

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

Вы можете использовать Spring Python

Ссылка: http://docs.spring.io/spring-python/1.2.x/sphinx/html/aop.html#aspect-oriented-programming

  • Определение PyBufferProcs в Python 2.7, когда класс реализует PEP 3118
  • Указатели и «Хранение небезопасной производной C от временной ссылки на Python»
  • Компилятор не может найти Py_InitModule () .. он устарел, и если да, то что я должен использовать?
  • почему я не смог построить sqlite3 при сборке python?
  • Импорт и использование стандартного модуля Python из внутреннего расширения Python C
  • Как построить расширение Python C, чтобы я мог импортировать его из модуля
  • Учебники по оптимизации нетривиальных приложений Python с расширениями C или Cython
  • Повреждение данных: где ошибка?
  •  
    Interesting Posts for Van-Lav

    как перенаправить URL-адрес с помощью строки запроса django

    Как динамически нажать кнопку загрузки с помощью selenium python?

    Открыть список между процессом на сервере python

    Heroku и OpenCV с Python

    Google App Engine – Datastore get_or_insert key_name путаница

    Pickle не будет работать с tkinter

    Как использовать pytest, чтобы проверить, что ошибка НЕ ​​поднята

    Python, как индексировать многомерный массив со строковым ключом, например, dict

    Невозможно импортировать zmq в python (установить проблему)

    какой самый быстрый способ инициализировать матрицу scipy.sparse с numpy.NaN?

    Отображать справочное сообщение с python argparse, когда скрипт вызывается без каких-либо аргументов

    -bash: ./manage.py: запрещен отказ

    Как установить тайм-аут для urlfetch в Google App Engine?

    Python 2.7: Как преобразовать escape-последовательности unicode в строку в фактические символы utf-8

    Сделайте мою программу командной строки python интерактивной с argparse

    Python - лучший язык программирования в мире.