@decorator syntax is sugar, but for what exactly? (decorator libraries).
Steven Bethard
steven.bethard at gmail.com
Tue Aug 10 12:55:29 EDT 2004
Andrew Durdin <adurdin at gmail.com> wrote in message news:<mailman.1361.1091977078.5135.python-list at python.org>...
> Well, I think I agree with the principle of limiting the expressions
> to dotted names. Some of the possibilities if you allow arbitrary
> expressions are pretty hairy:
>
> """
> Things someone might want to do, ordered roughly from most reasonable
> to least reasonable ;)
> @foo().bar()
> @foo or bar
> @mydecorators['foo']
> @lambda f: foo(f) or bar(f)
> """
> (from http://mail.python.org/pipermail/python-dev/2004-August/046673.html)
I don't remember who, but someone already mentioned that you can do
all of these things with the limited syntax if you really want to,
either with operator.* or eval:
@eval("foo().bar()")
@eval("foo or bar")
@operator.getitem(mydecorators, 'foo')
@eval("lambda f: foo(f) or bar(f)")
There are probably ways to avoid some of the evals, but I haven't
really thought too hard about it.
Steve
More information about the Python-list
mailing list