[Python-ideas] Assignment decorators (Re: The Descriptor Protocol...)

Westley Martínez anikom15 at gmail.com
Tue Mar 8 15:35:55 CET 2011


On Mon, 2011-03-07 at 19:50 -0800, Raymond Hettinger wrote:
> On Mar 7, 2011, at 4:56 PM, Larry Hastings wrote:
> 
> > 
> > On 03/03/2011 03:45 PM, Greg Ewing wrote:
> >> I think we should have assignment decorators.
> >> 
> >> @decorator
> >> lhs = rhs
> >> 
> >> would be equivalent to
> >> 
> >> lhs = decorator('lhs', rhs)
> >> 
> > 
> > I timidly propose an alternate syntax.  What I don't like about the above proposal: assignment is no longer a one-liner.  So let's try it inline.
> > 
> > Example 1:
> > 
> >   lhs = @decorator
> > 
> > is equivalent to
> > 
> >   lhs = decorator(classobject, 'lhs', None)
> > 
>  . . .
> > 
> > I'm not confident any of this is a good idea; luckily this isn't the python-good-ideas-only list.  Phew!
> 
> Just for the fun of it, here's my offering:
> 
> 
>     a := gizmo(arg1, arg2)
> 
> is equivalent to
> 
>     a = gimzo(arg1, arg2, __name__='a')
> 
> Advantages:
> 
>   * Doesn't rewrite the order of arguments
>   * Keep the current '@' notation unambiguous
>   * Still looks like an assignment.
>   * Would give a meaningful error message if gizmo() weren't expecting a name
>   * Doesn't look like perl
>   * Doesn't twist your mind into a pretzel
>   * No new keywords
>   * Easy to adapt any existing tools that need to know their own name
>   * Doesn't seem like magic or spooky action at a distance
>   * The program still looks like a Python program
>   
> Disadvantage:
> 
>   * I'm still not sure that the "problem" is worth solving.
>   * Between this and function annotations, it looks like Pascal is coming back.
> 
> 
> Raymond

This is the worst suggestion I've seen so far. := ambiguous and gives no
hint as to what it is doing and its use in other languages would add
confusion. := could be used for any kind of "funky assignment". := also
just looks weird.




More information about the Python-ideas mailing list