知っている@staticmethod
、@classmethod
、@property
、ただし散在するドキュメントを通じてのみ。 Pythonに組み込まれているすべての関数デコレータは何ですか?それはドキュメントにありますか?どこかに維持されている最新のリストはありますか?
そうは思いません。デコレータは通常の関数と違いはなく、より洗練された方法で呼び出すだけです。
それらすべてを見つけるには、 組み込みの関数 リストを検索してみてください。 Python用語集 デコレータ構文は構文糖衣です。次の2つの定義は同等の関数を作成します(この例は用語集からコピーされています)。
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
したがって、別の関数を返す組み込み関数は、デコレーターとして使用できます。質問です-そのように使用することは理にかなっていますか? :-)
functools モジュールには、デコレーターとして使用できるいくつかの関数が含まれていますが、これらは要求された組み込み関数ではありません。
これらは組み込みではありませんが、サンプルデコレータの this library は非常に優れています。
Abgan says のように、組み込み関数リストはおそらく見るのに最適な場所です。ただし、デコレータはクラスとしても実装できるため、包括的であるとは限りません。
関数を返すためにデコレータは必要ありません。 @atexit.register
前。