2008年07月01日
Pythonで@deprecatedというデコレータを用意する
@deprecatedというデコレータがあれば、
## そろそろ削除したい関数があるとき @deprecated def unsupportedfunc(): nanika ## foo から bar に関数名を変えるとき def bar(): nanika foo = deprecated(bar)とできて便利です。 このdecoratorの実装例が、Cookbookに載っていました <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/391367> Cookbookのコメント欄にもありますが、stacklevelを設定することで、deprecatedな関数を呼んだのがどこかを調べることができます。
warnings.warn("Call to deprecated function %s." % func.__name__,
- category=DeprecationWarning)
+ category=DeprecationWarning,
+ stacklevel=2)
Python 2.5にdeprecated decoratorを入れるかどうかがPython-Devで話題になっていたのですが、今のところ__builtin__にも標準ライブラリにも入ってないようです。(あまり深く追っていません)
@methane
