[python] 데코레이터를 이용하여 파라미터의 값을 제한 하는 예제
파이썬에서 파라미터로 전달받는 데이터의 값을 제한하기 위해서 데코레이터를 이용하는 방법은 다음과 같다.
파이썬3면 Enum을 이용하면 좀더 깔끔하게 처리할 수 있을 것 같다.
인스펙트를 이용하여 추가로 처리하는 예제는 다음과 같다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import inspect
values = [ "a", "b", "c" ]
def check_param_values(param_name, check_list):
def wrapper(func):
param_index = inspect.getargspec(func).args.index(param_name)
def decorator(*args, **kwargs):
if args[param_index] not in check_list:
raise ValueError("Argument value error {0} not in [{1}]".format(param_name, ", ".join(check_list)))
return func(*args, **kwargs)
return decorator
return wrapper
@check_param_values("param1", values)
def temp(param1, param2):
print(param1, param2)
temp("f", "b")