def register(obj,func):
setattr(obj,func.__name__, func)
def obj_example_func():
pass
def input_func():
print("This is input function)
# obj_example_func 객체(함수)에 input_func 함수를 추가함
register(obj_example_func,input_func)
obj_example_func.input_func()
def register(obj,func=None):
if func is None: # 인자가 하나만 들어온다면
return partial(register,obj) # register(obj, )
setattr(obj,func.__name__, func)
return func
case 1 : 기본 decorator
def test(func):
def tt():
print("HI")
func()
print("check")
return tt
@test # 내 이해용. test에 check를 집어 넣음
def check():
print("*"*10)
check()
출력 결과
HI
**********
\heck
case 2: decorator 붙일 함수에 인자 넣기
def test(func):
def tt(*args,**kwargs):
print("HI")
func(*args,**kwargs)
print("check")
return tt
@test
def check(name):
print(f"**** {name}")
check("NAME ")
출력 결과
HI
**** NAME
check
case 3: decorator에 인자 넣기
def test(input_):
def kk(func):
def tt(*args,**kwargs):
print("HI")
print(input_)
func(*args,**kwargs)
print("check")
return tt
return kk
@test(input_="hihih")
def check(name):
print(f"**** {name}")
check("NAME ")
출력결과
HI
hihih
**** NAME
check