Python

GreenBeanΒ·2021λ…„ 5μ›” 6일
0
post-thumbnail

Decorator

ν•¨μˆ˜λ₯Ό λ°›μ•„ λͺ…령을 μΆ”κ°€ν•œ λ’€ 이λ₯Ό λ‹€μ‹œ ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

  • ν•¨μˆ˜μ˜ λ‚΄λΆ€λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  κΈ°λŠ₯에 λ³€ν™”λ₯Ό μ£Όκ³  싢을 λ•Œ μ‚¬μš©
  • 일반적으둜 ν•¨μˆ˜μ˜ μ „μ²˜λ¦¬λ‚˜ ν›„μ²˜λ¦¬μ— λŒ€ν•œ ν•„μš”κ°€ μžˆμ„ λ•Œ μ‚¬μš©
  • λ°μ½”λ ˆμ΄ν„°λ₯Ό μ΄μš©ν•˜λ©΄ λ°˜λ³΅μ„ 쀄이고 λ©”μ†Œλ“œλ‚˜ ν•¨μˆ˜μ˜ μ±…μž„μ„ ν™•μž₯ κ°€λŠ₯

Decorator ꡬ쑰

  • ν•¨μˆ˜λ‘œ λ§Œλ“€ λ•Œ
def out_func(func):  # κΈ°λŠ₯을 μΆ”κ°€ν•  ν•¨μˆ˜λ₯Ό 인자둜 λ°›μŒ  
    def inner_func(*args, **kwargs):
        return func(*args, **kwargs)    
    return inner_func
  • Example
def decorator(func):
    def wrapper(*args, **kwargs):       
        print('μ „μ²˜λ¦¬')   
        print(func(*args, **kwargs))
        print('ν›„μ²˜λ¦¬')
    return wrapper
    
@decorator
def example():
    return 'ν•¨μˆ˜'
    
example()

# result
μ „μ²˜λ¦¬
ν•¨μˆ˜
ν›„μ²˜λ¦¬
  • 클래슀둜 λ§Œλ“€ λ•Œ
class Decorator:

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

    def __call__(self, *args, **kwargs):
        return self.function(*args, **kwargs)
  • Example
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()

# result
μ „μ²˜λ¦¬
클래슀
ν›„μ²˜λ¦¬
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 λŒ“κΈ€