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

问题描述 投票:25回答:2

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

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

我想知道Python是否有这样的事情。

不要误会我的意思,我不是说图书馆,而是像AspectJ这样的语言扩展是Java。

python aop python-extensions
2个回答
35
投票

Python不需要像“语言扩展”那样的东西就可以以面向方面的方式工作。

这完全是由于Python本身的动态机制。 Google搜索将产生几个项目-但尽管看起来只像库,但这是Python所需的全部。

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

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

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

BTW,这是我的快速技巧,它获得了将Aspect Orientation与Pure Python结合使用的有效示例。抱歉-代码注释在pt_BR中-https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py


© www.soinside.com 2019 - 2024. All rights reserved.