Проблема в том, что надо знать имя функции и ее переменных в декораторе overload. Как быть? | Код | @accept(int, int, int) def _myfunc1(a,b,c=8) print a,b,c
@accept(int, int ,string) def _myfunc2(a,b,c='q') print a,b,c
@overload((_myfunc1, _myfunc2)) def myfunc(*args, **kvargs): pass
|
Описание декораторов: | Код | def accepts(*d_args): def decorate_func(f): def accepts_decorate(*args): for item in zip(args, d_args): verify(isinstance(*item), 'Function %s should accept %s, not %s' % (f.func_name, d_args, [type(a) for a in args])) return f(*args) return accepts_decorate return decorate_func
def overload_function(overload_functions): def decor_generator(f): def overload_decorate(*args, **kvargs): print overload_functions # здесь проверки какую функцию все-таки юзать и вызов return overload_decorate return decor_generator
|
Печатает: | Код | (<function accepts_decorate at 0x00C58870>, <function accepts_decorate at 0x00C588F0>)
|
Хочется иметь столько инфы как если бы декоратор overload_function был вызван первый
|