Python Basic - Decorator(예제)

DevSmiler·2020년 2월 3일
0

Python Basic

목록 보기
10/11

파이썬 Decorator란?

기존 함수나 클래스를 유지하면서 다양한 기능을 추가하는 장식이라고 생각하면 쉽다.(클래스에 대한 설명은 따로하지 않겠습니다.)
Decorator 는 일종의 Chain of Functions 입니다.
즉, 중첩함수를 리턴하는 함수만 데코레이터로 사용할 수 있습니다 .

이제부터는 예제를 통해서 예시를 보여드리겠습니다 .

def decoratorExam(func):
	def childFunc(*args, **kwarg):
    	func(*args, **kwarg)
	return childFunc


def goAdd(a, b):
	print("a+b = ", (a + b))


goAdd(3, 4)

위는 기본 데코레이터 예시입니다. 아래는 같은 함수에 Text를 더 추가해 보았습니다.

def name_decorator(text):
	def decorator(func):
 	   def new_func(*args, **kwargs):
   	     print(" ㄷㅔ코레이터를 적용한 함수")
   	     result = str(func(*args, **kwargs))+text
    	    return result
 	   return new_func

return decorator

@name_decorator("데코레이터 함수 응용")//요렇게 쓸수도 있지롱
def add_a_b(a, b):

return a+b
print(add_a_b(10, 20))

result : ㄷㅔ코레이터를 적용한 함수
		 30 string

다음은 데코레이터 클래스 예제를 보여드리겠습니다.

class decoClass:
def init(self, func):
self.func = func
print("I'm deco class")

    def __call__(self, *args, **kwargs):
	    print("this is deco class Function")
      	self.func(*args, **kwargs)


@decoClass
def test(a, b, c):

print("Variables : ", a, b, c)

test(1, 3, 4)

데코 안에서 데코레이터

class decoClass2:

def _decorator(func):
def wrap(self, *args, **kwargs):

	        # print("start", )
	        func(self, *args, **kwargs)
  	  return wrap

@_decorator
def test(self, a, b, c):
    print("values : ", a, b, c)


testDeco = decoClass2()
testDeco.test(1, 4, 2)

result : values :  1 4 2
profile
A ship is always safe at the shore, but that is not what it is built for - Albert Einstein

0개의 댓글