Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
ayudita no le encuentro la solución
#1
En el siguiente método se crea un atributo temporal y protegido para calcular el número de nodos que tiene un árbol binario. Este atributo es de carácter temporal porque no se actualiza con otros métodos como inserción o eliminación. Si quisiéramos eliminar el atributo luego de utilizarlo y obtener la respuesta requerida por el método.. cual sería el cambio a realizar en el mismo.

Código:
la función recursiva n_nodos() crea un atributo al árbol self.__n donde sumará
# los valores de los nodos a través del recorrido, al final retorna el valor del atributo  

   def n_nodos (self, raiz = None):
           if (raiz == None):
                   self.__n = 0
                   if (self.__raiz == None):
                           return self.__n
                   raiz = self.__raiz

           self.__n = self.__n + 1
           if (raiz.hizq != None):
                   self.n_nodos(raiz.hizq)

           if (raiz.hder != None):
                   self.n_nodos(raiz.hder)

           return self.__n
Responder
#2
Hola. ¿A qué te refieres con eliminar el atributo? No me queda claro a lo que quieres llegar, ¿podrías poner el código completo y el resultado que quieres obtener?

Por otro lado, no deberías anteponer dos guiones bajos para denotar atributos "privados". En su lugar, la convención en Python es utilizar un guión bajo (por ejemplo, self._n).

Un saludo.
Responder
#3
(26-10-2016, 02:46 PM)Francisco escribió: Hola. ¿A qué te refieres con eliminar el atributo? No me queda claro a lo que quieres llegar, ¿podrías poner el código completo y el resultado que quieres obtener?

Por otro lado, no deberías anteponer dos guiones bajos para denotar atributos "privados". En su lugar, la convención en Python es utilizar un guión bajo (por ejemplo, self._n).

Un saludo.

es decir mi pregunta si me pudieras orientar como se elimina un atributo privado en clases usando python 2.7. para el metodo antes mencionado. luego de usar el atributo como lo elimino usando el ( del )
adjunto el codigo completo. https://repl.it/EGwt
Responder
#4
El problema es que no hay atributos privados ni protegidos en Python. Utilizar un guión bajo antes del nombre de un objeto es simplemente una convención, pero igualmente puede ser accedido. De todas formas puedes utilizar del self.__n para eliminar el objeto.

Código:
def n_nodos (self, raiz = None):
   # ...
   ret = self.__n
   del self.__n
   return ret

[geshi=python]def n_nodos (self, raiz = None):
   # ...
   ret = self.__n
   del self.__n
   return ret[/geshi]

Saludos!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)