Alexander Eisenhuth a écrit : > Hi all, > > I'm wodering how the information hiding in python is ment.
Conventions... > As I > understand there doesn't exist public / protected / private mechanism, > but a '_' and '__' naming convention. Yes. > As I figured out there is only public and private possible as speakin in > "C++ manner". Nope. It's either 'interface' (no leading underscore), 'implementation' (single leading underscore), 'implementation with some protection against accidental overriding' (two leading underscores). > Are you all happy with it. Can't speak for others, but as far as I'm concerned, I'm perfectly happy with this. > > class A: > def __init__(self): > self.__z = 1 > self._z = 2 > self.z = 3 > def _getX(self): > return "X" > def __getY(self): > return "Y" > def doAnything(self): > print self.__getY() > > > class B(A): > def __init__(self): > A.__init__(self) > print dir (self) > >>> b = B() > ['_A__getY', '_A__z', '__doc__', '__init__', '__module__', '_getX', > '_z', 'doAnything', 'z'] > > I was a bit surprised about '_A__getY' and '_A__z'. It's documented. (snip) > What is the idea behind the _ and __ naming. cf above. You may also want to read this - while C++ is not Java either, some advises may still apply: http://dirtsimple.org/2004/12/python-is-not-java.html HTH -- http://mail.python.org/mailman/listinfo/python-list