Why does python not have a mechanism for data hiding?

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Fri Jun 6 17:28:02 CEST 2008

Russ P. a écrit :
> On Jun 5, 2:27 pm, Dennis Lee Bieber <wlfr... at ix.netcom.com> wrote:
>> On Thu, 5 Jun 2008 11:36:28 -0700 (PDT), "Russ P."
>> <Russ.Paie... at gmail.com> declaimed the following in comp.lang.python:
>>> would need to use a "mangled" name to access private data or methods.
>>> But you will be using the name many times, you can reassign your own
>>> name, of course, so the mangled name need not appear more than once
>>> where it is needed.
>>         Which will break the first time the "innards" rebind a value to the
>> mangled name, as the "simplified" external name will still be bound to
>> the previous value.
> I'm not sure you understood what I meant. In current Python, if I need
> access to data element __XX in class YourClass, I can use
> ZZ._YourClass__XX, but if I don't want to clutter my code with that
> mangled name, I can just write
> XX = ZZ._YourClass__XX
> and refer to it from that point on as XX. 
> Obviously if the meaning of
> __XX changes within class ZZ, this will break, but that's why you are
> supposed to avoid using private data in the first place.

AFAICT, What Dennis meant is that the binding of ZZ._YourClass__XX 
changes between the moment you bind it to local XX and the moment you 
use it, then you're out.

More information about the Python-list mailing list