問題タブ [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.
python - 静的メソッドとクラスメソッドの違い
@staticmethod
で装飾された関数とで装飾された関数の違いは何@classmethod
ですか?
python - 関数デコレータを作成し、それらをチェーンする方法は?
Pythonで次のような2つのデコレータを作成するにはどうすればよいですか?
...これは戻るはずです:
私はHTML
実際のアプリケーションでこのようにしようとしているのではなく、デコレータとデコレータチェーンがどのように機能するかを理解しようとしているだけです。
python - クラスメソッドの装飾 - インスタンスをデコレータに渡す方法は?
これは Python 2.5 であり、GAEでもありますが、問題ではありません。
次のコードがあります。dec_check
クラスをデコレーターとして使用して、bar で foo() メソッドを装飾しています。
これを実行するとき、私は見たいと思っていました:
しかし、私はオブジェクトメソッドであるため、引数としてTypeError: foo() takes exactly 1 argument (0 given)
取るようになっています。問題は、デコレータ コードを実行しているときに のインスタンスが実際には存在しないことだと思います。.foo()
self
bar
bar
では、のインスタンスをデコレータ クラスに渡すにはどうすればよいでしょうか。
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?
python - Pythonでプロパティ機能を使用する方法についての実世界の例?
@property
Pythonでの使い方に興味があります。私はPythonのドキュメントを読みましたが、私の意見では、そこにある例は単なるおもちゃのコードです:
_x
プロパティデコレータで塗りつぶされたものをラップすることで得られる利点がわかりません。次のように実装しないのはなぜですか:
プロパティ機能は、場合によっては役立つかもしれないと思います。でもいつ?誰かが私にいくつかの実例を教えてもらえますか?
python - Pythonで「アット」(@)記号は何をしますか?
シンボルを使用した Python コードを見ています@
が、それが何をするのかわかりません。@
また、シンボルが含まれているとPythonドキュメントを検索したり、Googleが関連する結果を返さないため、何を検索すればよいかわかりません。
python - Python デコレータに追加の引数を渡すにはどうすればよいですか?
以下のようなデコレータがあります。
このデコレーターを拡張して、以下のような別の引数を受け入れたい
しかし、このコードはエラーを出し、
TypeError: myDecorator() は正確に 2 つの引数を取ります (1 つ指定)
関数が自動的に渡されないのはなぜですか? 関数をデコレータ関数に明示的に渡すにはどうすればよいですか?
python - Pythonで条件付きデコレータを実行する方法
関数を条件付きでデコレータすることは可能ですか?たとえば、関数foo()
をタイマー関数(timeit
)で装飾したいのはdoing_performance_analysisだけですTrue
(以下の疑似コードを参照)。
python - 自己引数を持つクラスメソッドデコレーター?
クラスメソッドのデコレータにクラスフィールドを引数として渡すにはどうすればよいですか? 私がやりたいことは次のようなものです:
self.url
デコレータに渡すための self が存在しないと不平を言っています。これを回避する方法はありますか?