variables privadas y herencia

camontuyu camontuyu en yahoo.es
Lun Ene 9 16:16:46 CET 2006


Batista, Facundo wrote:

>#- estoy empezando con Python. He mirado por estas listas que 
>#- no se pueden
>#- heredar las variables privadas de una clase. Y me gustaría saber si
>#- existe alguna forma de que una clase hija puede acceder a 
>#- las variables
>#- privadas de padre. O sea una variable protegida al estilo C++.
>
>Python no tiene variables protegidas al estilo C++ (tiene variables
>protegidas, pero no con ese estilo).
>
>
>#- Es posible o tengo q declararlas publica?
>
>  
>
>>>>class C:
>>>>        
>>>>
>	def __init__(self, val):
>		self.val = val
>
>		
>  
>
>>>>class D(C):
>>>>        
>>>>
>	def go(self):
>		print self.val
>
>		
>  
>
>>>>d = D(34)
>>>>d.go()
>>>>        
>>>>
>34
>  
>
>
>¿Eso es lo que buscás?
>  
>

Lo que busco exactamente es algo parecido a esto.

class A:
    def __init__(self):
       self.__privada = "soy privada en A"

class B(A):
    def __str__(self):
       return self.__privada

>>> a = A()
>>> a.privada
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: A instance has no attribute 'privada'

>>> a.__privada
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: A instance has no attribute '__privada'

>>> b = B()
>>> print b
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 3, in __str__
AttributeError: B instance has no attribute '_B__privada'

vamos poder acceder a las variables privadas de A desde un hijo suyo, o
sea desde B




Más información sobre la lista de distribución Python-es