Eric Brunel a écrit : > On Sun, 25 Feb 2007 22:12:52 +0100, Bruno Desthuilliers > <[EMAIL PROTECTED]> 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 /> -- http://mail.python.org/mailman/listinfo/python-list