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

cor*_*ump 25 python aop python-extensions

可能重复:
Python的任何AOP支持库?

我熟悉AspectJJava语言的扩展.

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

不要误解我的意思,我不是指库,而是像AspectJJava 那样的语言扩展.

jsb*_*eno 34

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

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

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

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

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

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

  • 截至 2021 年 2 月 19 日,代码桶链接不起作用。如果有人可以在答案本身中添加示例代码,那将会很有帮助 (2认同)