data hiding/namespace pollution

Steven Bethard steven.bethard at
Tue Nov 1 03:35:08 CET 2005

Alex Hunsley wrote:
> The two main versions I've encountered for data pseudo-hiding 
> (encapsulation) in python are:
> method 1:
> _X  - (single underscore) - just cosmetic, a convention to let someone
>       know that this data should be private.
> method 2:
> __X - (double underscore) - mangles the name (in a predictable way).
>       Avoids name pollution.

Method 2 is also (though to a lesser degree) just cosmetic -- it doesn't 
prevent all name clashes even if you're reasonable enough not to name 
anything in the _X__xxx pattern.  I gave an example of this in an 
earlier thread on this topic[1].  The basic problem is that 
double-underscore mangling doesn't include the module name, so two 
classes in different modules with the same class names can easily mess 
with each others' "private" attributes.



More information about the Python-list mailing list