James Powell added the comment: I see this as removing a restriction and a special-case from the decorator syntax (noting, of course, that these were introduced deliberately.)
In terms of whether the new forms are improvements, my preference is to leave this up to the judgement of the programmer, moderated of course by their prevailing coding guide. I would argue that this change does not force any additional complexity on the programmer (who is free to take or leave it) or on the interpreter (- the straightforwardness of the patch corroborates this.) I would also argue that there are certainly cases where, in the midst of some large codebase, the dotted_name restriction may seem a bit arbitrary. This is likely true for: class Foo: def bar(self, func): return func @staticmethod def baz(func): return func @staticmethod def quux(): def dec(func): return func return dec # invalid @Foo().bar def f(): pass # valid @Foo.baz def f(): pass # valid @Foo.quux() def f(): pass For completeness' sake, I have attached a patch with an additional unit test and amended documentation. Should we proceed with writing a PEP for Python 3.5? ---------- Added file: http://bugs.python.org/file32741/decorator-syntax.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue19660> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com