Using metaclasses to play with decorators.
michele.simionato at poste.it
Tue Jun 15 11:39:56 CEST 2004
Michael Sparks <zathras at thwackety.com> wrote in message news:<mailman.958.1087257261.6949.python-list at python.org>...
> [ I'm not really sure of the etiquette of the python-dev list, so I think
> I'll play "safe" and post this thought here... I know some of the
> developers do look here, and Guido's comment (before europython) on the
> dev list saying he's not interested in new syntaxes makes me think this
> is a better place for it... ]
> At Europython Guido discussed with everyone the outstanding issue with
> decorators and there was a clear majority in favour of having them, which
> was good. From where I was sitting it looked like about 20:20 split on the
> following syntaxes:
> 1 def func(arg1, arg2, arg3) [dec,dec,dec]:
> 2 [dec,dec,dec] def func(arg1, arg2, arg3):
> When it came to the decision on whether 2.4 includin one of these two
> options or a waiting for a third unspecified, indeterminate syntax in a
> later version, it looked like around a 60:40 vote in favour of waiting.
> (ie 60:20:20 for waiting/syntax 1/syntax 2)
The problem of metaclasses-based solutions is that they are hacks.
We don't want everybody to implement his/her version of decorators
(yes me too I have implemented mine). Decorators MUST be in the core
language. Waiting will only favor the abuse of metaclasses.
I do not particularly like each of two syntaxes (even if the second
one looks better) but also I do not particularly dislike them.
My preferred solution would be
def func(...) is dec:
*without* the ability to specify multiple decorators (i.e. let compose
the multiple generators explicitely by hand, with a functional.compose
function or something like that).
But I prefer to have a syntax I don't like 100% then waiting for another
year or so. Why don't put a given syntax in 2.4a, see how it goes, and
change it in 2.4b if it is the case?
More information about the Python-list