[Python-Dev] Class decorators

Phillip J. Eby pje at telecommunity.com
Fri Mar 31 18:52:05 CEST 2006


At 04:47 AM 3/31/2006 -0800, Michael Chermside wrote:
>In the discussion over class decorators, Jim Jewett writes:
> > I have often started with a function, and ended up replacing it with a
> > callable object so that I could save state without resorting to
> > "defalt args" or worse.
> >
> > I would prefer to decorate these exactly like the functions they replace.
>
>I have observed the entire discussion about class decorators with absolutely
>no opinion, until I read Jim's brief post quoted above. I am now completely
>convinced that class decorators ought to exist and behave exactly like
>function decorators. Thanks, Jim for pointing out what should have been
>obvious to me from the start. The ability to use callable objects as
>functions is a powerful tool in Python, and ought not be broken by decorator
>inconsistencies.

Unless the class has a metaclass implementing __call__, or you mean that 
you want instance creation to be a call, I don't understand what you mean.

Nonetheless, the discussion has only been about *where* the decorators go 
and what syntax they use.  Nobody has proposed any change in decorator 
semantics, so please stop attacking this meaningless strawman.

Moving from:

     @foo
     def bar(...):
         ...

to:

     class bar:
         @class foo
         def __init___(...):
             ...

instead of:

     @foo
     class bar:
         def __init___(...):
             ...

is a trivial difference in editing: you type "class " one more time.



More information about the Python-Dev mailing list