Your wish is my command

It’s a long journey

파라미터가 있는 Decorator

Python의 Decorator 기능은 한마디로 멋지다. 잘 쓰면 유용하지… 근데 작성하면 항상 헷갈린단 말이지…

decorator에 파라미터를 넘겨주고자 하는 경우에도 상당히 헷갈린다. 파라미터가 없는 것하고 형태가 아주 또 달라지거든.. 간단히 기억하자 파라미터가 있는 데코레이터는 wrapp 함수를 한번 더 두어야한다는 것..

def prefix_decorator(func):
        def new_func(*args, **kwargs):
                return 'prefix: ' + func(*args, **kwargs)
        return new_func

def my_decorator(str):
        def wrap(func):
                def new_func(*args, **kwargs):
                        return func(*args, **kwargs) + ' :' + str
                return new_func

        return wrap

@prefix_decorator
@my_decorator('added by decorator')
def test():
        return "I'm test"

print test()

실행 결과는 아래와 같음..

prefix: I'm test :added by decorator