[Python-Dev] Re: PEP 318: Decorators last before colon

Mike Thompson mike.spam.filter at day8.com.au
Wed Mar 31 18:26:39 EST 2004


Guido van Rossum wrote:

>>This looks ugly to me. I do have top level functions that would use
>>decorators because those functions will be put into a class as
>>classmethods and this class will be put into sys.modules instead of
>>the original module. Replacing
>>
>>def foo(cls):
>>    ...
>>foo = classmethod(foo)
>>
>>with
>>
>>if True:
>>    [classmethod]
>>    def foo(cls):
>>       ...
>>
>>doesn't look that attractive to me.
> 
> 
> You won't have to do that except in interactive mode.  How often do
> you type functions that need decorators interactively?
> 

Wouldn't a small addition to your syntax make all these (special case) 
problems disappear and, perhaps, go some way to making the syntax more 
readable (particularly for beginners)::

     as: [classmethod]
     def func(args)

I'm a relative newbie to Python (12 months but many, many years 
elsewhere) which means I'm only qualified to comment on what a newbie 
would find confusing and I can assure you an isolated list on a line by 
itself or having to read about "if True:" work-arounds, would be 
remarkably confusing in a language where so much else happens just the 
way you would expect.

If the decorator list is to go first and on the line above, then the 
'as:' syntax just looks so right to my newbie eyes and sensibilities. 
It even read fairly well for the oft given 'classmethod' and 
'staticmethod' use cases.

--
Mike





More information about the Python-Dev mailing list