タグ付けされた質問 「decorator」

デコレーターは、オブジェクト指向の設計パターンであり、動的な方法で既存のクラスに動作を追加できます。ギャングオブフォーの構造設計パターンの1つです。

17
関数デコレータのチェーンを作る方法は?
Pythonで次のような2つのデコレータを作成するにはどうすればよいですか? @makebold @makeitalic def say(): return "Hello" ...返されるはずです: "<b><i>Hello</i></b>" 私はHTML実際のアプリケーションでこのようにしようとするのではなく、デコレータとデコレータチェーンのしくみを理解しようとしています。

14
@propertyデコレーターはどのように機能しますか?
組み込み関数がどのように機能するかを理解したいと思いpropertyます。私を混乱させるのは、それpropertyがデコレーターとしても使用できることですが、組み込み関数として使用される場合にのみ引数を取り、デコレーターとして使用される場合は取りません。 この例はドキュメントからのものです: class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.") property引数はgetx、setx、delxおよびドキュメンテーション文字列。 以下のコードでpropertyは、デコレータとして使用されています。そのオブジェクトはx関数ですが、上のコードでは、引数にオブジェクト関数の場所がありません。 class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x …

22
Pythonでのシングルトンの作成
この質問は、シングルトンデザインパターンが望ましいかどうか、アンチパターンであるかどうか、または宗教戦争の場合ではなく、このパターンがPythonで最もPython的に実装される方法について議論するためのものです。この場合、私は「ほとんどのpythonic」を「最小の驚きの原則」に従うことを定義します。 シングルトンになる複数のクラスがあります(私のユースケースはロガー用ですが、これは重要ではありません)。単に継承したり装飾したりできるときに、追加されたガンフを使用していくつかのクラスを散らかしたくありません。 最良の方法: 方法1:デコレーター def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass(BaseClass): pass 長所 デコレータは、多くの場合、複数の継承よりも直感的な方法で追加されます。 短所 MyClass()を使用して作成されたオブジェクトは真のシングルトンオブジェクトですが、MyClass自体はクラスではなく関数なので、そこからクラスメソッドを呼び出すことはできません。またためm = MyClass(); n = MyClass(); o = type(n)();、その後m == n && m != o && n != …

6
functools.wrapsは何をしますか?
別の質問に対するこの回答についてのコメントで、何functools.wrapsが行われているのかわからないと誰かが言った。だから、私はこの質問をして、将来の参照のためにStackOverflowにその記録を残すようにしfunctools.wrapsます:正確には何をしますか?

13
プロキシ、デコレータ、アダプタ、およびブリッジのパターンはどのように違いますか?
私はプロキシパターンを見ていましたが、私には、デコレータ、アダプタ、およびブリッジパターンのようにひどいように見えます。私は何かを誤解していますか?違いは何ですか?なぜ他のものに対してプロキシパターンを使用するのですか?過去に実際のプロジェクトでそれらをどのように使用しましたか?

13
パラメータ付きのデコレータ?
デコレータによる変数「insurance_mode」の転送に問題があります。私は次のデコレータステートメントでそれを行います: @execute_complete_reservation(True) def test_booking_gta_object(self): self.test_select_gta_object() しかし、残念ながら、このステートメントは機能しません。おそらく、この問題を解決するためのより良い方法があるでしょう。 def execute_complete_reservation(test_case,insurance_mode): def inner_function(self,*args,**kwargs): self.test_create_qsf_query() test_case(self,*args,**kwargs) self.test_select_room_option() if insurance_mode: self.test_accept_insurance_crosseling() else: self.test_decline_insurance_crosseling() self.test_configure_pax_details() self.test_configure_payer_details return inner_function
401 python  decorator 

13
Pythonデコレータの一般的な用途は何ですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 私は自分を適度に有能なPythonコーダーと考えるのが好きですが、私が理解できなかった言語の1つの側面はデコレーターです。 私はそれらが(表面的に)何であるかを知っており、スタックオーバーフローに関するチュートリアル、例、質問を読みました、そして私は構文を理解し、自分で書くことができ、時々@classmethodと@staticmethodを使用しますが、私自身のPythonコードの問題を解決するデコレータ。「うーん...これはデコレータの仕事のように見える!」という問題に遭遇したことはありません。 それで、皆さんが自分のプログラムでデコレーターを使用した例をいくつか提供できるかどうか疑問に思っています。うまくいけば、「A-ha!」瞬間とそれらを取得します。
335 python  decorator 

29
TypeScriptコンパイルでの実験的なデコレータ警告
警告が表示されます... デコレータの実験的なサポートは、将来のリリースで変更される可能性がある機能です。この警告を削除するには、「experimentalDecorators」オプションを設定します。 ... tsconfig.jsonのcompilerOptionsには次の設定がありますが: "emitDecoratorMetadata": true, "experimentalDecorators": true, 奇妙なのは、デコレータを使用する一部のランダムクラスはその警告を表示しないが、同じプロジェクトの残りのクラスは表示することです。 TypeScriptコンパイラでこのような動作を引き起こす原因は何ですか?

15
メソッドパラメータ名を取得する方法
Python関数を考える: def a_method(arg1, arg2): pass 引数の数と名前を抽出するにはどうすればよいですか。つまり、への参照があることを前提としてfunc、func.[something]を返し("arg1", "arg2")ます。 これの使用シナリオは、デコレータがあり、メソッドの引数を実際の関数にキーとして表示されるのと同じ順序で使用したい場合です。つまり、デコレータは、"a,b"呼び出したときに印刷されたように見えますa_method("a", "b")か?

2
Redux @connectデコレーターの '@'(アットマーク)は何ですか?
私はReactでReduxを学んでいて、このコードに出くわしました。Redux固有かどうかはわかりませんが、いずれかの例で次のコードスニペットを確認しました。 @connect((state) => { return { key: state.a.b }; }) の機能connectはかなり単純ですが、@以前はわかりませんconnect。私が間違っていなければ、それはJavaScriptオペレーターでさえありません。 誰かがこれは何で、なぜそれが使用されているのか説明してもらえますか? 更新: 実際react-reduxには、ReactコンポーネントをReduxストアに接続するために使用されます。

3
typescriptデコレータを実装する方法は?
TypeScript 1.5にデコレータが追加されました。 誰かがデコレータを実装する適切な方法を示し、可能な有効なデコレータ署名の引数が何を意味するかを説明する簡単な例を提供できますか? declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void; declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void; declare type ParameterDecorator = (target: Function, propertyKey: …


5
クラス本体内でクラスstaticmethodを呼び出していますか?
クラスの本体内から静的メソッドを使用しようとするとstaticmethod、次のように、組み込み関数をデコレーターとして使用して静的メソッドを定義します。 class Klass(object): @staticmethod # use as decorator def _stat_func(): return 42 _ANS = _stat_func() # call the staticmethod def method(self): ret = Klass._stat_func() + Klass._ANS return ret 次のエラーが発生します。 Traceback (most recent call last):<br> File "call_staticmethod.py", line 1, in <module> class Klass(object): File "call_staticmethod.py", line 7, in Klass _ANS = …

16
関数の戻り値を単にキャッシュするデコレーターはありますか?
以下を検討してください。 @property def name(self): if not hasattr(self, '_name'): # expensive calculation self._name = 1 + 1 return self._name 私は新しいですが、キャッシュはデコレータに組み入れることができると思います。私だけがそのようなものを見つけられませんでした;) PS実際の計算は可変値に依存しません

4
Pythonの@ foo.setterが機能しないのはなぜですか?
そのため、Python 2.6でデコレーターを使用していますが、デコレーターを機能させるのに問題があります。これが私のクラスファイルです: class testDec: @property def x(self): print 'called getter' return self._x @x.setter def x(self, value): print 'called setter' self._x = value これはxプロパティのように扱うことですが、getおよびset時にこれらの関数を呼び出します。そこで、IDLEを起動して確認しました。 >>> from testDec import testDec from testDec import testDec >>> t = testDec() t = testDec() >>> t.x t.x called getter Traceback (most recent call last): File …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.