デコレータ@python
wxPythonとXRCedでGUIツールの作成法勉強中。
デコレータというPythonの機能に遭遇したので使い方と動きのメモ。funcの関数定義の一行上に@decoと書いてやれば、func(arg)を呼んだときに先にdecoを実行したあとでfuncを実行するというだけ。名前のとおりでもともとある関数をデコレート(装飾)する機能。引数の扱いがちょっとややこしいけど書いてみればきっとわかるはず。
テスト
# -*- coding: sjis -*- def deco(func): def wrap(arg): print arg return func(arg) print "deco" return wrap @deco def func(arg): print "func" if __name__ == '__main__': func("hoge")
実行結果
deco hoge func