最初に、Pythonデコレータとは何か、そしてそれらがどのように機能するかを学びました。そして、私はそれがこのようなことをしたいと思います:
def age_over_18(go_enjoy_yourself):
def go_home_and_rethink_your_life():
return 'So you should go home and rethink your life.'
return go_enjoy_yourself if age_stored_somewhere > 18 else go_home_and_rethink_your_life
@age_over_18
def some_porn_things():
return '-Beep-'
しかし、関数がPythonによって最初に読み取られたときにデコレータが実行されることがわかりました。つまり、この関数は実際には何もしません。
私は次のようなものを書くことができることを知っています:
def some_porn_things():
if age_stored_somewhere > 18:
...
else:
...
しかし、デコレータは優雅で理解しやすいと思うので、問題は次のとおりです。
関数を呼び出すまでデコレータの発生を遅らせることはできますか?