From: Greg Ewing
Particularly considering the latter restriction, I'm wondering whether these should be treated differently in the syntax. Maybe something like
def [type2trans] foo(args) [type1trans, type1trans...]: ...
or
def foo [type2trans] (args) [type1trans, type1trans...]: ...
This might also help satisfy Guido's concerns about the positioning of 'classmethod' and 'staticmethod', since, being type 2 transformers, they would go up front.
Hmm - this seems like it has possibilities. Since we could only have one decorator that returned a descriptor, we could dispense with the [] on those, leading to: def descriptor_trans func_name (func_args) [callable_trans, callable_trans, ...]: ... e.g. def classmethod foo (cls, arg1, arg2) [synchronized(lock)]: pass which I think satisfies most the (IMO) most important requirements that various people have put forwards, namely: 1. `classmethod` and `staticmethod` are very important and should be very obvious (Guido seems absolutely adamant on this); 2. The name of the method should be near `def`; 3. There should be nothing between the name of the function and the arguments. Tim Delaney