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
klab_gijutsu2 at 14:15│Comments(0)TrackBack(0)Python 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント