他の言語で実装されているPython記述子プロトコルのようなものがありますか?あなたのクラスの実装を膨らませることなくモジュール化/カプセル化を増やすいい方法のようですが、他の言語でも同じようなことは聞いたことがありません。ルックアップのオーバーヘッドのために他の言語には存在しない可能性はありますか?他の言語のPython記述子プロトコルアナログ?
答えて
私は直接的に同等のものについて聞いたことがありません。おそらくマクロで、特に非常に強力なマクロを持つLispのような言語で同じ効果を達成することができます。
他の言語が非常に強力であるため、類似のものを組み込むことができれば、私は全く驚くことはありません。
RubyとC#の両方で、Pythonの場合と同様に、属性に対してgetter/setterメソッドを指定することで、アクセサーを簡単に作成できます。しかし、これはPythonが許しているように、別のクラスにこれらのメソッドのコードを記述できるようにはなっていません。実際には、このクラスの記述子プロトコルで定義された属性が同じクラスに実装されているのを見るたびに、この問題の重要性がわかりません。
EDIT:私のディスレクシア(これは私が不注意な読解を意味する)を訂正します。何らかの理由で私はいつも "デコレータ"として "ディスクリプタ"を読んでおり、その逆もあります。正当な情報を持っているので、私の投稿はそのまま残しておきますが、質問とは全く関係のない情報です。
「デコレータ」という用語自体は、実際には有名な「デザインパターン」の本に記載されているデザインパターンの名前です。 Wikipediaの記事には、さまざまなプログラミング言語のデコレータ使用に関する多くの例が含まれています。http://en.wikipedia.org/wiki/Decorator_pattern
しかし、その記事のデコレータはオブジェクト指向です。 Pythonデコレータは、実行時に関数を別の関数に置き換えることによって機能的に動作し、関数を効果的に変更/置き換えたり、コードを挿入したりすることができます。
これはアスペクト指向プログラミングとして知られており、AspectJ Javaコンパイラではこのようなことを行い、AspectJコード(Javaのスーパーセット)をJavaバイトコードにコンパイルできます。
デコレータのバージョンが何であるかを知るには、C#またはRubyに馴染みがありません。
- 1. OData記述言語
- 2. ウェブサービスタスクフロー記述言語
- 3. 記述的宣言的カーネル言語
- 4. Python記述子と継承
- 5. ゼファーASDL(抽象構文記述言語)
- 6. python closeファイル記述子の質問
- 7. リスト付きのPython 2記述子
- 8. D Python記述子のようなメタプログラミング?
- 9. 128の記述子?
- 10. ある画像のSURF記述子を他の画像の記述子リストと比較する
- 11. Pythonで適応可能な記述子
- 12. アプリケーション記述子は、ブラックベリーに他のアプリケーション記述子を与えることができますか?
- 13. pythonでregexで記述された有限言語によるループ
- 14. Linuxファイル記述子多重化の方針(selectその他)
- 15. Pythonの記述子のメタプログラミング:クラス定義の後に記述子を追加する方法は?
- 16. Javaポート記述子
- 17. webservice記述子ファイル
- 18. Windowsプロセス記述子
- 19. パデル-記述子コマンドライン
- 20. QTcpSocket記述子エラー
- 21. Lin記述子ファイルパーサー
- 22. SIFT記述子のサイズ
- 23. Bash:ファイル記述子のリダイレクト
- 24. C#のオーディオ記述子MFCC
- 25. ファイル記述子の位置
- 26. Object [] []のJavaフィールド記述子
- 27. Prolog - 述語の演算子
- 28. 構造体と関数をC言語で記述するプログラム
- 29. EXT4ファイルシステムをC言語で記述していますか?
- 30. .NETを動的言語で記述していますか?
[記述子プロトコル](http://docs.python.org/ref/descriptors.html)は、[デコレータパターン](http://www.python.org/dev/peps/)と同じではありません。 pep-0318 /)をPythonで - 私は動的に "プロキシ"されている別のオブジェクトの属性にオブジェクトインスタンスを作る機能を指しています。 – cdleary