Hint: If I change Dog and Bat to old-style classes, there's no problem, everything works fine.
Okay, here's the code dump from my playground:: ------------------------------------------ #!/usr/bin/env python class Mixin: def mixin(object, *classes): NewClass = type('Mixin', (object.__class__,) + classes, {}) newobj = NewClass() newobj.__dict__.update(object.__dict__) return newobj class Cat(object): def __init__(self): self.love = 0 def meow(self): print "meow" class Dog(object): def bark(self): print "bark" class Bat(object): def scream(self): print "scream" mycat = Cat() mycat.love = 4 mycat.__class__.__bases__ += (Mixin,) mycat.mixin(Dog, Bat) print mycat.love def isClass(object): if isinstance(object, type): return True elif isinstance(object, types.ClassType): return True else: return False def listClasses(): classes = [] for eachobj in globals().keys(): if isClass(globals()[eachobj]): classes.append(globals()[eachobj]) print eachobj return classes def applyMixinGlobal(*Mixins): for eachclass in listClasses(): MixInto(eachclass, Mixins) #applyMixinGlobal(Mixin) def MixInto(Class, *Mixins): for eachMixin in Mixins: if eachMixin not in Class.__bases__: Class.__bases__ += (eachMixin,) MixInto(Bat, Mixin) Bat.__bases__ += (Dog,) dargo = Bat() dargo = dargo.mixin(Cat) dargo.meow() Simon Forman wrote: > [EMAIL PROTECTED] wrote: > > What are the reason one would get this error: TypeError: Cannot create > > a consistent method resolution order (MRO) for bases object ?? > > > > I can provide the code if needed.... > > Yes, do that. > > That's an amazing error. > > ~Simon -- http://mail.python.org/mailman/listinfo/python-list