私は多くの関数を持つpythonモジュールを持っており、それらのすべてにデコレータを適用したい。 デコレータを適用する行にコピー貼り付けをしなくても、すべての機能にこのデコレータを適用するために、サルパッチを使用してすべてをパッチする方法はありますか?言い換えればデコレータでモジュール内のすべての関数にパッチを当てる
、私はこの置き換えたい:これにより
@logging_decorator(args)
func_1():
pass
@logging_decorator(args)
func_2():
pass
@logging_decorator(args)
func_3():
pass
@logging_decorator(args)
func_n():
pass
を:
patch_func():
# get all functions of this module
# apply @logging_decorator to all (or not all) of them
func_1():
pass
func_2():
pass
func_3():
pass
func_n():
pass
私はあなたがそれをどうやって行うのかは分かりませんが、私はあなたがすべきではないと思います。明示的にする方が良いです。検索/置換は、すべての関数にタイプする必要があるという問題を解決するのに役立ちます。 –
終わりではありませんが、 'import'すると、モジュールが公開している名前を反復してそこからパッチを当てることができます。 – jonrsharpe
[this](http://code.activestate.com/recipes/577742-apply-decorators-to-all-functions-in-a-module/)を試しましたか?それは少し混乱しているようです。 – Jezor