I have a counterexample. Consider refactoring a class from....
class B(A): etc
....into....
class C(A): etc class B(C): etc
Usage of some double-undescore attributes moved from B to the new intermediate base class C. Unit tests on B still passed, so that change is safe. right?
The problem occured because the double-underscore mangling uses the class name, but ignores module names. A related project already had a class named C derived from B (same name - different module). My refactoring caused aliasing of some originally distinct double-underscore attributes.
Very interesting. I hadn't ever really thought about it, but I guess this shows that even __-mangling won't solve all of the attribute-renaming problems...
A somewhat related problem is briefly discussed in Guido's autosuper example:
http://www.python.org/2.2.3/descrintro.html#metaclass_examples
where a base class derived from a class using autosuper but with the same name as the superclass might get the wrong self.__super.
Steve -- http://mail.python.org/mailman/listinfo/python-list