Python中的面向方面编程(AOP)

时间:2012-09-10 17:33:21

标签: python aop python-extensions

  

可能重复:
  Any AOP support library for Python?

我熟悉Java语言的AspectJ扩展名。

我想知道Python是否有这样的东西。

不要误解我的意思,我不是指库,而是像AspectJ这样的语言扩展是Java。

2 个答案:

答案 0 :(得分:31)

Python不需要像“语言扩展”这样的东西,因为它能够以面向方面的方式工作。

这仅仅是由于Python本身的动态机制。谷歌搜索将产生几个项目 - 但尽管看起来只是像库,但它只是Python所需要的。

我没有这样做 - 事实上你可以内省类和方法,并在运行时更改它们。当我第一次了解Aspect Orientation时,我可以在几个小时内在Python中实现一些概念证明 - 当然,一些现有项目可以提供生产质量的条目。

但是既然你问过,有一种可以用于Aspect Orientation的Python“语言​​扩展”:当我做了上面提到的概念验证时,我曾经在运行时检查方法的输入参数确定某些方法是否会受到规则的影响。

在Python 3中,该语言有一个鲜为人知的特性,它允许用户注释输入参数并返回函数或方法的值。方面定向库可以利用它在“加载时”应用其魔法,而不是在每次函数调用时应用它。

顺便说一句,这是我快速破解一个使用Aspect方向与Pure Python的实例。对不起 - 代码评论在pt_BR中 - https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py

答案 1 :(得分:4)