Subscribed unsubscribe Subscribe Subscribe

デコレータでAOPらしきもの

Python

Pythonのデコレータについてあれこれ検索すると,いくつかのサイトではAOPみたいなことができると書いてある.

以前アスペクト指向について調べたとき参考にしたサイトのサンプルプログラムをPythonで書いてみる.

FileLogger.javaは以下のように書き換えられるのだろう.

def logger(func):
    def wrapped(*args, **kwargs):
        print 'ユーザ登録開始'
        func(*args, **kwargs)
        print 'ユーザ登録完了'
    return wrapped

さらに実際にユーザ登録するメソッドregistにデコレータを示す@loggerを追加する.

class UserDAO(object):
    @logger
    def regist(self, user):
        print 'ユーザ登録処理'

これで出力は一緒になるけど,いいのかなぁ? FileLoggerクラスにするにはどうすれば良いんだろう?

やっぱりあんまりぴんとこないなぁ.もっと詳しい説明とか実際のサンプルをもっと読めということなのかな?