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
