[Python-Dev] def ... decorate
Raymond Hettinger
python at rcn.com
Fri Aug 13 20:11:06 CEST 2004
> I've kept my nose out of the decorator discussion, but I thought I
would
> give my opinion on this one...
>
>
> > On Fri, 13 Aug 2004, Skip Montanaro wrote:
> >
> > >with
> > >
> > > def p_statement_expr:
> > > staticmethod
> > > grammarrule('statement : expression')
> > > version("Added in 2.4")
> > > deprecatedmethod
> > > type_(None)
> > > decorate (self, p):
> > > """docstring here"""
> > > print p[1]
> >
> > Bingo!
>
> Oh god no.
>
>
> > Just replace decorate with "from" and the nice syntax is found:
> >
> > def f:
> > staticmethod
> > grammarrule('statement : expression')
> > version("Added in 2.4")
> > deprecatedmethod
> > type_(None)
> > from self, p:
> > """docstring here"""
> > print p[1]
>
> Gah, the horror.
I think we should take maximum advantage of prior art. Other languages
have proven the efficacy of backwards spellings. Likewise, the reST
module has proven the utility of ASCII markup.
dothemcitats::
elurrammarg ``statement : expression''::
dohtemdetacerped::
``````````````````
def f(arg):
. . .
Advantages:
* Won't delude people into thinking they can understand a python program
just by reading it.
* Highly adaptable to electronic parsing while discouraging the adverse
trend towards human readability.
* Accomplishes the life saving core goal of moving decorators up a few
lines while only incurring the minor cost of complicating the snot out
of the language.
* Unlikely to be confused with any existing python constructs.
* Takes less effort to implement, document, and test than to read all of
the decorator syntax emails to date.
Alternative:
A further application of prior art would be to hypergeneralize the
solution to this problem and design a solution using XML. This takes
maximum advantage of existing tools while providing a framework for all
potential future proposals to add a second or third way to accomplish
things we can already do now.
citsacras-ly yours,
Raymond
More information about the Python-Dev
mailing list