30

重複の可能性:
Python 用の AOP サポート ライブラリはありますか?

私はAspectJJava 言語の拡張機能に精通しています。

Pythonにそのようなものがあるかどうか知りたいです。

誤解しないでほしいのですが、ライブラリのことではなく、AspectJJava のような言語拡張のことです。

4

2 に答える 2

38

Pythonは、アスペクト指向の方法で動作できるようにするために「言語拡張」のようなものを必要としません。

これは、Python自体の動的メカニズムによるものです。Google検索では、いくつかのプロジェクトが生成されますが、ライブラリのように見えますが、Pythonで必要なのはそれだけです。

私はこれを構成していません-クラスとメソッドをイントロスペクトし、実行時にそれらを変更できるのは事実です。アスペクト指向について最初に学んだとき、Pythonで概念実証を数時間で実装できました。確かに、既存のプロジェクトのいくつかは、本番品質のエントリを提供できます。

しかし、あなたが尋ねたので、アスペクト指向に使用できる種類のPython「言語拡張」があります。上記の概念実証を行ったとき、実行時にメソッドへの入力パラメーターをチェックして、特定のメソッドは、ルールの影響を受けるかどうかに関係なく影響を受けます。

Python 3には、関数またはメソッドの入力パラメーターと戻り値に注釈を付けることができる、言語のほとんど知られていない機能があります。アスペクト指向ライブラリは、これを利用して、各関数呼び出し時ではなく、「ロード時」にその魔法を適用することができます。

ところで、ここに、純粋なPythonでアスペクト指向を使用する実用的な例を取得するための簡単なハックがあります。申し訳ありませんが、コードコメントはpt_BRにあり ます-https ://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/aspect.py

于 2012-09-10T17:41:26.397 に答える
5

使用できますSpring Python

リンク: http://docs.spring.io/spring-python/1.2.x/sphinx/html/aop.html#aspect-directional-programming

于 2012-09-10T17:38:43.297 に答える