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

标签 python aop python-extensions

Possible Duplicate:
Any AOP support library for Python?

我熟悉 Java 语言的 AspectJ 扩展。

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

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

最佳答案

Python 不需要“语言扩展”之类的东西就能以面向方面的方式工作。

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

这不是我编造的——事实上,您可以内省(introspection)类和方法,并在运行时更改它们。当我第一次了解 Aspect Orientation 时,我可以在几个小时内用 Python 实现一些概念证明——当然,现有的一些项目可以提供生产质量的条目。

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

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

顺便说一句,这里是我的快速破解,以获取将 Aspect Orientation 与纯 Python 结合使用的工作示例。抱歉 - 代码注释在 pt_BR - https://github.com/jsbueno/metapython/blob/main/aspect.py

关于python - Python中的面向方面编程(AOP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356713/

相关文章:

python - 使用 distutilscross 交叉编译 python native C 扩展,setup.py 不会接受 '-x' 参数

python - 通过列名和工作表名称获取列数据

python - Linux中调用系统命令 'history'

java - Spring AOP 配置(XML)

用于回归测试的记录程序执行的Java自动化测试工具

python - 我可以使用哪个工具(gdb?xcode?pdb?等)来查找 C 扩展 python 程序中的内存泄漏?

python - tp_clear、tp_dealloc 和 tp_free 之间有什么区别?

python - docker 组成 : OSError: [Errno 99] Cannot assign requested address

python - 运行机器学习时的准确度异常高

java - 编译时方面编织不起作用