Форум сайта python.su
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’
подскажите как лечится?
Отредактировано (Март 28, 2009 17:12:19)
Офлайн
:)
Проще всего посмотреть на пилоновские декораторы, и сделать по аналогии…
Офлайн
Получилось если делать так:
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
Офлайн