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