
The best thing to do would perhaps to make __mro__ assignable, but with a check that ensures the above constraint. I think I'd take a patch for that.
Shouldn't be too hard.
I'd also take a patch for assignable __bases__. Note that there are constraints between __bases__ and __base__.
Should assigning to __bases__ automatically tweak __mro__ and __base__? Guess so.
Yes. Note that changing __base__ should not be done lightly -- basically, the old and new base must be layout compatible, exactly like for assignment to __class__.
What would assigning to __base__ do in isolation? Perhaps that shouldn't be writeable.
Perhaps it could be writable when __bases__ is a 1-tuple. But it's fine if it's not writable.
I'd also take a patch for assignable __name__.
This is practically a one-liner, isn't it? Not hard, anyway.
Probably. Can't remember why I didn't do it earlier.
And there was me wondering what I was going to do this evening.
I don't have that problem -- a Zope customer problem was waiting for me today. :-( --Guido van Rossum (home page: http://www.python.org/~guido/)