본문 바로가기
파이썬

[python]Decorator(데코레이터)란?

by 김수호님 2018. 11. 26.
728x90
반응형

Decorator(데코레이터)


함수를 꾸며주는 함수. 기존에 정의된 함수에 기능을 손쉽게 추가해주는 함수

어떤 동작을 함수 전/후에 수행해야 하거나, 공통적으로 사용하는 코드를 쉽게 관리할 때 사용


파이썬 함수의 특징


-변수에 할당 가능

-다른 함수 내에 정의 가능

-함수의 인자로 전달 가능

-함수의 반환값이 될 수 있음



위와 같이 데코레이터를 만들게 되면 기존 함수의 속성들이 사라짐

(__name__,__doc__ 등이 원 함수가 아닌 데코레이터의 것으로 적용됨)

이를 보완하기 위해 functools 모듈의 wraps를 사용한다.




데코레이터 인자 넘기기

-데코레이터에 추가 인자를 넘길 수 있다.

(이 때 데코레이터를 만들어주는 함수를 정의한다고 보면 된다)


클래스로 데코레이터 만들기

-class의 __call__ 메소드로 구현 가능

 (call 메소드는 클래스를 함수처럼 실행시 호출된다 ex- class Test()->a=Test()->a())


#출처:https://blog.jonnung.com/python/2015/08/17/python-decorator/

728x90
반응형