AOP decorator?

Jon Clements joncle at googlemail.com
Mon Mar 1 20:49:39 CET 2010


On Mar 1, 4:22 pm, gentlestone <tibor.b... at hotmail.com> wrote:
> Hi,
>
> suppose my source code looks like:
> --------------------------------
>   import aspect_xy
>   class Basic(object, aspect_xy.Basic):
>     pass # basic attributes and methods ...
> --------------------------------
> and the source code of aspect_xy.py is:
> --------------------------------
>   class Basic(object):
>     pass  # aspect extra attributes and methods ...
> --------------------------------
> how can I write this with decorators? I want something like:
> -------------------------------
>   import aspect_xy
>   @aspect_xy # extra attributes and methods ...
>   class Basic(object):
>     pass # basic attributes and methods ...
> ----------------------------------------------------------
> I want to write class decorator function, which:
> 1. Takes the basic class as parameter
> 2. Find the same class name in aspect_xy.py
> 3. Inherit the found aspect class
> Is it possible?

Untested and written quickly, so all possible disclaimers apply ;)

class BaseObject(object):
    pass

def aspect_xy_dec(base):
    def wrapper(cls):
	return type(cls.__name__, (base, getattr(aspect_xy, cls.__name__)),
{})
    return wrapper

@aspect_xy(BaseObject)
class SomeObject:
    pass


Cheers,

Jon.





More information about the Python-list mailing list