[Python-Dev] Class decorators

Phillip J. Eby pje at telecommunity.com
Wed Mar 29 19:27:29 CEST 2006


At 12:48 AM 3/29/2006 -0500, Fred L. Drake, Jr. wrote:
>Agreed, but... guess we can't have everything.  On the other hand, something
>like:
>
>     class Foo:
>         """Documentation is good."""
>
>         @class implements(IFoo)
>
>is not ambiguous.  Hmm.  It even says what it means.  :-)

Interesting.  I might have to rename some of my decorators to read well 
that way, though.  I'll play around with the idea a bit.

Of course, one of my use cases for class-level declarations is to work 
around the fact that decorators can't be applied to arbitrary attributes of 
a class, only to methods.  Hm.  Let me see:

   class SomeThing:
      """Some docs"""

      @class security.permissions(
          foo = security.Anybody,
          bar = myapp.User,
          ...
      )

   class SomeCommand:
      """usage: some_command [-v|-q] [-f FILENAME] ..."""

      @class options.accept(
         verbose = [
            options.Set('-v', '--verbose', value=True, help="Be loud"),
            options.Set('-q', '--quiet', value=False, help="Be quiet")
         ],
         filename = [
            options.Set('-f', '--file', type=str, metavar="FILENAME")
         ]
      )

Not bad.  Not bad at all.



More information about the Python-Dev mailing list