Python : decorator sample again

http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/python/virtualMachine/decorator.htm

hdknr@LennyOne:~$ more decorator.py
original=None

def worker(var):
    print "* worker(%s) is working."%var
    print "starting…."
    original(var)
    print "finished."

def decorator(decorated):
    print "* deco(%s) is working."%decorated
    global original
    original=decorated
    return worker

@decorator
def test( var ):
    print "* test(%s) is called." % var

test(5)

hdknr@LennyOne:~$ python decorator.py
* deco(<function test at 0xb7cff0d4>) is working.
* worker(5) is working.
starting….
* test(5) is called.
finished.

以下のようにきれいに書ける。

hdknr@LennyOne:~$ cat decorator.py
def decorator(decorated):
    print "* deco(%s) is working."%decorated

    original=decorated
    def worker(var):
        print "* worker(%s) is working."%var
        print "starting…."
        original(var)
        print "finished."

    return worker

@decorator
def test( var ):
    print "* test(%s) is called." % var

test(5)

苦労じゃ。

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中