Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать что обернуто в декоратор 
:(
    Опции темы
shupg
Дата 2.11.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 21.6.2006

Репутация: 2
Всего: 2



Проблема в том, что надо знать имя функции и ее переменных в декораторе 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



Код

myfunc(1,2,'')


Описание декораторов:
Код

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 был вызван первый
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.