On Mar 1, 4:22 pm, gentlestone <tibor.b...@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. -- http://mail.python.org/mailman/listinfo/python-list