問題タブ [python-decorators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
33 に答える
946139 参照

python - 静的メソッドとクラスメソッドの違い

@staticmethodで装飾された関数とで装飾された関数の違いは何@classmethodですか?

0 投票する
17 に答える
595370 参照

python - 関数デコレータを作成し、それらをチェーンする方法は?

Pythonで次のような2つのデコレータを作成するにはどうすればよいですか?

...これは戻るはずです:

私はHTML実際のアプリケーションでこのようにしようとしているのではなく、デコレータとデコレータチェーンがどのように機能するかを理解しようとしているだけです。

0 投票する
3 に答える
40099 参照

python - クラスメソッドの装飾 - インスタンスをデコレータに渡す方法は?

これは Python 2.5 であり、GAEでもありますが、問題ではありません。

次のコードがあります。dec_checkクラスをデコレーターとして使用して、bar で foo() メソッドを装飾しています。

これを実行するとき、私は見たいと思っていました:

しかし、私はオブジェクトメソッドであるため、引数としてTypeError: foo() takes exactly 1 argument (0 given)取るようになっています。問題は、デコレータ コードを実行しているときに のインスタンスが実際には存在しないことだと思います。.foo()selfbar

barでは、のインスタンスをデコレータ クラスに渡すにはどうすればよいでしょうか。

0 投票する
3 に答える
6731 参照

python - Python デコレータ、self が混同されています

私は Python デコレーターを初めて使用します (すばらしい機能です!)。self引数が混乱しているため、次のコードをうまく動作させることができません。

これを実行すると、次のようになります。

私がする行のためにself.cache[fname] = self.f(self,*args)

問題- 明らかに問題は、実際には属性selfを持たない Session インスタンスではなく、キャッシャー オブジェクトであることです。plただし、これを解決する方法が見つかりません。

私が考えたが使用できない解決策- 正しいコンテキストで評価されるように、デコレータ クラスが値の代わりに関数を返すようにすることを考えました (この記事のセクション 2.1 のように)selfが、それは不可能です。私のデコレーターはクラスとして実装され、組み込み __call__メソッドを使用しているためです。次に、__call__メソッドが必要ないように、デコレーターにクラスを使用しないself.cacheことを考えましたが、デコレーター呼び出し間で状態を保持する必要があるため (つまり、属性の内容を追跡するため)、それはできません。.

質問- グローバルcacheディクショナリ変数を使用する以外に (試したことはありませんが、うまくいくと思います)、このデコレータを機能させる方法はありますか?

編集: この SO の質問は似ているようですDecorating python class methods, how do I pass the instance to the decorator?

0 投票する
10 に答える
72298 参照

python - Pythonでプロパティ機能を使用する方法についての実世界の例?

@propertyPythonでの使い方に興味があります。私はPythonのドキュメントを読みましたが、私の意見では、そこにある例は単なるおもちゃのコードです:

_xプロパティデコレータで塗りつぶされたものをラップすることで得られる利点がわかりません。次のように実装しないのはなぜですか:

プロパティ機能は、場合によっては役立つかもしれないと思います。でもいつ?誰かが私にいくつかの実例を教えてもらえますか?

0 投票する
14 に答える
527974 参照

python - Pythonで「アット」(@)記号は何をしますか?

シンボルを使用した Python コードを見ています@が、それが何をするのかわかりません。@また、シンボルが含まれているとPythonドキュメントを検索したり、Googleが関連する結果を返さないため、何を検索すればよいかわかりません。

0 投票する
4 に答える
1056 参照

python - @で始まるpython行

重複の可能性:
Python デコレータを理解する

これを見つけたdjangoアプリのソースコードを読んでいました

@で始まる行はどういう意味ですか?

0 投票する
5 に答える
75781 参照

python - Python デコレータに追加の引数を渡すにはどうすればよいですか?

以下のようなデコレータがあります。

このデコレーターを拡張して、以下のような別の引数を受け入れたい

しかし、このコードはエラーを出し、

TypeError: myDecorator() は正確に 2 つの引数を取ります (1 つ指定)

関数が自動的に渡されないのはなぜですか? 関数をデコレータ関数に明示的に渡すにはどうすればよいですか?

0 投票する
6 に答える
25584 参照

python - Pythonで条件付きデコレータを実行する方法

関数を条件付きでデコレータすることは可能ですか?たとえば、関数foo()をタイマー関数(timeit)で装飾したいのはdoing_performance_analysisだけですTrue(以下の疑似コードを参照)。

0 投票する
7 に答える
182703 参照

python - 自己引数を持つクラスメソッドデコレーター?

クラスメソッドのデコレータにクラスフィールドを引数として渡すにはどうすればよいですか? 私がやりたいことは次のようなものです:

self.urlデコレータに渡すための self が存在しないと不平を言っています。これを回避する方法はありますか?