Private functions and inheritance

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Sun Jul 15 18:38:33 EDT 2007


Maciej Bliziński a écrit :
(snip the rest - already answered by at least 3 persons).

> I
> don't want to expose the __bar() function outside, but on the other
> hand i want to defer its implementation to a subclass. It seems like I
> need to make it public, doesn't it?

First, keep in mind that that Python *does not* have any notion of 
(languaged enforced) access restriction. All that the  __name thingie 
does is to mangle the name with the class name, so A.bar become 
A._A__bar. This can be useful. Sometimes. Perhaps. (FWIW, I think I've 
used it once in seven years and I'm not sure it was really necessary 
after all).

Now there's a strong convention which says that _names prefixed by a 
single underscore are implementation stuff, and that anyone messing with 
implementation stuff implicitely accepts all the possible consequences.





More information about the Python-list mailing list