うさぎとスマホとプログラム

空色のうさぎ、手放せないスマホ、動けば良しのプログラム。 いつか自分の役に立つことを書く。

@a.b みたいなデコレータの作り方

そのまんまのメモです
デコレータをインポートしないで
tracer.cmd とかで実行できるようにしたくなったのでお試し。
ソースコード
class Main():
    def add_resp(self,cmd):
        def _add_resp(func):
            def wrapper(*args, **kwargs):
                print("Decorated!")
                func.decorated = "Cmd"
                return func(*args, **kwargs)
            return wrapper
        return _add_resp

tracer = Main()
       
@tracer.add_resp("test")
def help():
    print("testdesu")
    return "OK"

print(help())


実行結果
Decorated!
testdesu
OK

使い方
tracer の中に 関数を置いちゃっても使えるようになる
それだけ。

補足
func(*args, **kwargs) で実行しないと
で返ってきちゃう

感想
案外難しくなかった。