当前位置: 首页 > 面试题库 >

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

谭正谊
2023-03-14
问题内容

可能重复:
是否有适用于Python的AOP支持库?

我熟悉AspectJJava语言的扩展。

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

不要误会我的意思,我不是说库,而是像AspectJJava一样的语言扩展。


问题答案:

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

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

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

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

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

顺便说一句,这是我的快速技巧,以获取将Aspect Orientation与Pure Python结合使用的有效示例。对不起-代码中的注释是pt_BR表示-
https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py



 类似资料:
  • 问题内容: 在Android应用程序中实现面向方面的编程(AOP)的最佳方法是什么? 行动电池会更有效吗? 问题答案: 这取决于它的实现方式。 例如,AspectJ的编译时编织可在android上运行,而运行时编织则不行。Android不支持字节码生成。 检查Guice Wiki: 在后台,方法拦截是通过在运行时生成字节码来实现的。Guice动态创建一个子类,该子类通过覆盖方法应用拦截器。如果您使

  • 问题内容: Java面向方面的编程的最佳工具是什么? 该工具的要求当然是IDE支持,表达能力和适当的文档。 问题答案: JBossAOP和AspectJ是AOP的两个常用的成熟框架。另一个流行的选择是Spring AOP,但它缺少其他两个功能。 JBossAOP和AspectJ都具有相似的功能,一个很大的不同是AspectJ依赖于Java语言的扩展,而JBoss AOP则没有。 如果您的AOP要求

  • 在Python的类中有很多方法的名字有特殊的重要意义。现在我们将学习__init__方法的意义。 __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。 使用__init__方法 例11.3 使用__init__方法 #!/usr/bin/python # Filename: class_init.py c

  • 本文向大家介绍Python的面向对象编程方式学习笔记,包括了Python的面向对象编程方式学习笔记的使用技巧和注意事项,需要的朋友参考一下 类与实例 类与实例相互关联着:类是对象的定义,而实例是“真正的实物”,它存放了类中所定义的对象的具体信息。 下面的示例展示了如何创建一个类: 关键字是 class,紧接着一个类名。随后是定义类的类代码。这里通常由各种各样的定义和声明组成。新式类和经典类声明的最

  • 本文向大家介绍简述Python中的面向对象编程的概念,包括了简述Python中的面向对象编程的概念的使用技巧和注意事项,需要的朋友参考一下 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序

  • 1.11.1 面向对象编程概述: Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员