次のような関数デコレータを作成しました。
def tsfunc(func):
def wrappedFunc():
print '%s() called' % func.__name__
return func()
return wrappedFunc()
@tsfunc
def foo():
pass
foo() # to get it work, use foo instead of foo()
foo()
次のエラー メッセージが表示されました。
foo() called
Traceback (most recent call last):
File "decorator.py", line 11, in <module>
foo()
TypeError: 'NoneType' object is not callable
「foo()」を「foo」に置き換えることで機能します。しかし、私はまだ期待した結果を得られませんでした:
foo() called
foo
関数は一度しか呼び出されないようです。
なぜこれが起こっているのかを理解するのを手伝ってください。