Question about idiomatic use of _ and private stuff.

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Tue Feb 27 15:59:01 EST 2007


Eric Brunel a écrit :
> On Sun, 25 Feb 2007 22:12:52 +0100, Bruno Desthuilliers  
> <bdesth.quelquechose at free.quelquepart.fr> wrote:
> 
>> Steven W. Orr a écrit :
>>
>>> I understand that two leading underscores in a class attribute make 
>>> the  attribute private.
>>
>>
>> Nope. It doesn't make it "private", it mangles the attribute name 
>> with  the class name (ie : Bar.__mangled will become 
>> Bar._Bar__mangled  everywhere except inside Bar). This is only useful 
>> when you want to make  sure an attribute will not be *accidentally* 
>> accessed by a child class.  FWIW, I've found it of very limited use so 
>> far...
> 
> 
> If I'm not mistaken, it was originally introduced to allow designers of  
> sub-classes to use any attribute name they liked, without bothering to 
> go  up the whole class hierarchy to make sure this name was not already 
> used.  > Even if Python relies far less on inheritance than other
> languages, class  hierarchies are sometimes quite large.

Zope aside - but Zope is a world in itself, and certainly not the most 
Pythonic example of Python use -, I have not yet seen deep (I suppose 
that's what you mean here by "large") class hierarchies in Python.

> If in addition, 
> each class has a  lot of attributes, looking for an unused name can 
> become long and painful.  In this context, the double-underscore may be 
> a blessing.

My own experience is that it's often more trouble than gain. But please 
note that I said "of very limited use", not "totally useless" !-)

> My [€£$¥]0.02...

<aol />



More information about the Python-list mailing list