Class design (information hiding)

Alexander Eisenhuth newsuser at stacom-software.de
Fri Sep 7 04:35:27 EDT 2007


Hi all,

I'm wodering how the information hiding in python is ment. As I understand there 
  doesn't exist public / protected / private  mechanism, but a '_' and '__' 
naming convention.

As I figured out there is only public and private possible as speakin in "C++ 
manner". Are you all happy with it. What does "the zen of python" say to that 
design? (protected is useless?)


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'.

What would you say to a C++ Programmer about class interfaces in big Python 
systems? What is the idea behind the _ and __ naming. Use or don't use '_' 
methods ? (As Designer of the software, as Programmer of the software)

Regards Alexander



		



More information about the Python-list mailing list