[Python-Dev] method decorators (PEP 318)

Robert Mollitor mollitor at earthlink.net
Fri Mar 26 16:32:14 EST 2004


On Friday, March 26, 2004, at 10:10  AM, Guido van Rossum wrote:
> (2) Invent some other notation for setting function attributes as part
>     of the function *body*, before the doc string even.
>
> For (2) I am thinking aloud here:
>
>    def foobar(self, arg):
>        @author: "Guido van Rossum"
>        @deprecated
>        pass

Ages ago I used to think there was some type of internationalization 
problem
with '@', but I guess its use in Java, not to mention in URLs, belies 
that notion.
Still, you might want to save that token for some future operator that 
can be
used amongst other operators in an expression.

(Also thinking out loud)  How about

	def foobar (self, arg):
		:doc """This is my doc string."""
		:author "Guido van Rossum"
		:deprecated
		pass

Syntactically, I believe this could work, though you would only want it 
for
funcdef and classdef and probably not in single-line suites.  So 
(maybe):

	def_suite: simpe_stmt | NEWLINE INDENT decoration* stmt+ DEDENT
	decoration: ':' test NEWLINE

The hand waving justification is that while a ':' at the end of a line 
or in the middle
means "here comes the good stuff", at the beginning of the line it 
could mean
"but first here is an aside".


Robert Mollitor





More information about the Python-Dev mailing list