It seems that decorators solve two problems: - a way to move decoration close-to (or ideally on) the 'def' line - a way to specify N decorators together as a whole While J2 seems nice, I'd rather see someone build a 'composite' decorator as the function it really is, rather than introducing a new keyword: def composite(instance): return decorator_a(decorator_b(instance)) def @composite func(args): """ function body """ By splitting these problems, the definition of the decorator can be on the same line as the 'def' line, and the composite decorator can be applied to more than one function. Also, the operation of the decorator is very obvious ... far less "deep magic". One could even use function arguments... def makeDecorator(use_a = False, use_b = True): retval = lambda instance: instance if use_a: retval = lambda instance: retval(decorator_a(instance)) if use_b: retval = lambda instance: retval(decorator_b(instance)) return retval composite = makeDecorator(use_a = True) def composite func(args): """ function body """ I suppose if one wanted more magic... def @makeDecorator(use_a = True) func(args): """ function body """ In short, I don't see a reason why this solution needs to solve #2, as regular functions should suffice. Also, The problem is just #1 Cheers, Clark
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4