[Python-Dev] method decorators (PEP 318) (original) (raw)
Skip Montanaro skip at pobox.com
Fri Mar 26 12:32:41 EST 2004
- Previous message: [Python-Dev] method decorators (PEP 318)
- Next message: [Python-Dev] method decorators (PEP 318)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guido> (1) Put decorators of the first category early in the def
Guido> statement, for example here:
Guido> def foobar [classmethod] (cls, foo, bar):
Guido> ...
How is this better than afterwards?
Guido> (2) Invent some other notation for setting function attributes as
Guido> part of the function *body*, before the doc string even.
Guido> For (2) I am thinking aloud here:
Guido> def foobar(self, arg):
Guido> @author: "Guido van Rossum"
Guido> @deprecated
Guido> pass
It's a shame that there's no good way to define function attributes already. Aside from the fact that this is different than the other form of "decoration", it's also different than setting attributes for classes. Rather than invent a unique syntax I'd prefer to either use a decorator function or suffer with tacking them on at the end:
def foobar(self, arg):
pass
foobar.author = "Guido van Rossum"
foobar.deprecated = True
Using the proposed decorator syntax with the decorator after the arglist with a little judicious indentation I can make it look sort of like what you're after:
def foobar(self, arg) [attributes(
author = "Guido van Rossum"
deprecated = True
)]:
pass
Another possibility would be to overload def:
def foobar(self, arg):
def author = "Guido van Rossum"
def deprecated = True
pass
I don't know if the parser can handle the lookahead necessary for that though.
Skip
- Previous message: [Python-Dev] method decorators (PEP 318)
- Next message: [Python-Dev] method decorators (PEP 318)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]