Python 데코레이터(Decorator)

데코레이터란?

홍찬기
2 min readFeb 26, 2020

함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수이다.
함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용한다 .
일반적으로 함수의 전처리나 후처리에 대한 필요가 있을때 사용을 한다.
또한 데코레이터를 이용해, 반복을 줄이고 메소드나 함수의 책임을 확장한다

데코레이터의 구조

함수로 만드는 데코레이터는 일반적으로 아래와같은 구조를 가지고 있다.

def out_func(func):  # 기능을 추가할 함수를 인자로

def inner_func(*args, **kwargs):

return func(*args, **kwargs)

return inner_func

example.py

def decorator(func):    def wrapper(*args, **kwargs):

print('전처리')
print(func(*args, **kwargs))
print('후처리')
return wrapper@decorator
def example():
return '함수'
example()
'''''''''
전처리
함수
후처리
'''''''''

클래스로 만드는 데코레이터 구조는 다음과 같다

class Decorator:

def __init__(self, function):
self.function = function

def __call__(self, *args, **kwargs):
return self.function(*args, **kwargs)

example.py

class Decorator:

def __init__(self, function):
self.function = function

def __call__(self, *args, **kwargs):
print('전처리')
print(self.function(*args, **kwargs))
print('후처리')
@Decorator
def example():
return '클래스'
example()
'''''''''
전처리
클래스
후처리
'''''''''

--

--