def service(**kwargs): def wrapper(klass): for name in ('get',): meth = getattr(klass, name) view_args = dict(kwargs, **getattr(meth, '__view_args__', {})) print 'define route %s with %s' % (name, view_args) return klass return wrapper def view(**kwargs): def wrapper(func): setattr(func, '__view_args__', kwargs) return func return wrapper @service(path='/path') class Service(object): @view(permission='view') def get(self): return {} ----------- % python test.py define route get with {'path': '/path', 'permission': 'view'}