[Python-Dev] 2.4a2, and @decorators

Barry Warsaw barry at python.org
Tue Aug 3 20:01:42 CEST 2004


On Mon, 2004-08-02 at 23:51, Guido van Rossum wrote:

> And yes, I'm not 100% comfortable with it either.  But I know one
> thing: in this particular case, now is better than never.  So I'm
> picking a solution everybody can hate equally.
> 
> (What's wrong with pear-shaped, anyway?  It's one of my favorite
> shapes. :-)

So I conducted a little experiment, converting a bunch of modules that
were using Python 2.3 compatible "post-processing" decorator syntax, to
pie decorator syntax, so that I could get a more visceral reaction to
the decision.  For me, the short answer is: +1, and not just because
"it's better than nothing".

For longer functions, it's a clear win; the '@' stands out nicely,
especially with the python-mode.el font-locking support I just added. :)
It certainly exhibits all the benefits that motivated adding special
syntax for decorators in the first place.

For shorter functions, e.g. read-only accessors, my only (very minor)
lament is that I can't compact the enter thing down to a single line. 
My fingers want to do something like:

	@property def get_bacon(self): return self._bacon

but then I tell my fingers to do this instead:

	@property
	def get_bacon(self):
		return self._bacon

Or, we'll compromise, my fingers and I, on:

	get_bacon = property(lambda self: self._bacon)

So it's at least a wash there.  (Really, pie decorators are better here
too, IMO.)

My only other minor lament has nothing to do with this specific syntax. 
I still wish there was a way to decorate multi-arg property()'s, but oh
well.

All in all, I'm quite happy with this syntax.  Thanks Guido!
-Barry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: This is a digitally signed message part
Url : http://mail.python.org/pipermail/python-dev/attachments/20040803/d88a456e/attachment.pgp


More information about the Python-Dev mailing list