On 16/02/2011 23:25, Makoto Kuwata wrote:
Hi,

I have a question about decorator.
I tried the following example and got Syntax Error.

     class deco(object):
         def __init__(self, name):
             self._name = name
         def foo(self, value):
             self._foo = value
             return self
         def __call__(self, func):
             func._deco = self
             return func

     ## ok
     @deco('aaa')
     def f1(): pass

     ## Syntax Error
     @deco('aaa').foo('bbb')  # SyntaxError: invalid syntax
     def f2(): pass

The above code shows that Python doesn't allow method chain
on decorator syntax.
Why does this limitation exist?
I want to chain methods as a certain DSL, just like:

     @recipe().product('*.html').ingreds('$(1).rst')
     def file_html(c):
         system(c%"rst2html.py $(ingred)>  $(product)")

If you know the reason of the restriction, let me know it.

You may want to read the discussion at:

https://groups.google.com/group/python-ideas/browse_thread/thread/1eebf486969c39a1/?hl=en
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to