[EMAIL PROTECTED] wrote: > Maric Michaud wrote: > (snip) >>This doesn't work in most cases (with new style classes), better recreat a >>type which inherit from Class and Mixin, or Class.__dict__ with >>Mixin.__dict__. > > > What doesn't work exactly? The whole purpose of the mixin is to add > functionality to the class and hence to all its instances on the fly.
very naïve solution: def mixin(obj): def someFunc(self, ...) # code here def someOtherFunc(self, ...) # code here cls = obj.__class__ cls.someFunc = someFunc cls.someOtherFunc = someOtherFunc Just a bit less nïave solution: def mixin(func): func._mixin = True return func def mixable(func): return getattr(attr, '_mixin', False): class Mixin(object): @mixin def someFunc(self, ...): # code here @mixin def someOtherFunc(self, ...) # code here def mix(cls, mixincls): for name in dir(mixincls): attr = getattr(mixincls, name) if callable(attr) and mixable(attr): setattr(cls, name, attr) Of course, one can do much better... -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list