A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-March/062888.html below:

[Python-Dev] Class decorators

[Python-Dev] Class decoratorsPhillip J. Eby pje at telecommunity.com
Tue Mar 28 04:23:50 CEST 2006
At 07:20 PM 3/27/2006 +0000, Mike Krell wrote:
>Greg Ewing <greg.ewing <at> canterbury.ac.nz> writes:
>
> >
> > I've just been playing around with metaclasses, and
> > I think I've stumbled across a reason for having
> > class decorators as an alternative to metaclasses
> > for some purposes.
>
>There has also been discussion on the IronPython mailing list that class
>decorators would be a very useful syntax for expressing .NET attributes.
>
>http://lists.ironpython.com/pipermail/users-ironpython.com/2006-March/002007.html 
>

PyProtocols and the zope.interface package both support inline class 
decorators called "class advisors".  They don't require any special syntax, 
and aren't much more complex than regular decorators.  By defining an 
advisor like this:

    from protocols.advice import addClassAdvisor

    def some_advisor(whatever_args):
        def callback(cls):
            print "I can modify",cls,"or replace it"
            return cls
        addClassAdvisor(callback)

you can then use it in a class body like so:

     class SomeClass:
         some_advisor("something")

And the return value from 'callback' will replace SomeClass, just like a 
decorator replaces the function it's called on.

The implementation should work with any Python version from 2.2 up.  I'm 
not sure if it would work with IronPython.  But if it doesn't, that would 
be a good indication of feature(s) that IronPython is missing.  ;)

More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4