Найти - Пользователи
Полная версия: Использование декораторов в контоллере?
Начало » Pyramid / Pylons / TurboGears » Использование декораторов в контоллере?
1
Anvolk
Pylons 0.9.6.2

Не получается заставить работать со своим декоратором.

в контроллере

class MyController(BaseController)
def mydecorator(fn)
def mywrap(*args)
….
return fn(*args)
return mywrap

@mydecorator
def mymeth1(self)


@mydecorator
def mymeth2(self, id=None)


с декоратором mymeth2 всегда вызывается с id=None, хотя id имеет какое-то значение. Если убрать декорирование всё ОК.

если декоратор описан как
def mydecorator(fn)
def mywrap(*args, **kwargs)
….
return fn(*args, **kwargs)
return mywrap

вылетает ошибка <type ‘exceptions.TypeError’>: mymeth2() got an unexpected keyword argument ‘action’

подскажите как лечится?
ofigetitelno
:)
Проще всего посмотреть на пилоновские декораторы, и сделать по аналогии…
Anvolk
Получилось если делать так:

from decorator import decorator

@decorator
def mydecorator(f, *args, **kws):

return f(*args, **kws)


пример 14 на http://www.ibm.com/developerworks/linux/library/l-cpdecor.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB