Foros del Web » Programando para Internet » Python »

Metodo no definido... ¿por ser privado?

Estas en el tema de Metodo no definido... ¿por ser privado? en el foro de Python en Foros del Web. Buenas, Continuando con el aprendizaje de Python, concretamente en el apartado de clases, encapsulacion y esas cosas, me topado con un problemilla... Este problemilla es ...
  #1 (permalink)  
Antiguo 30/06/2011, 10:30
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Metodo no definido... ¿por ser privado?

Buenas,

Continuando con el aprendizaje de Python, concretamente en el apartado de clases, encapsulacion y esas cosas, me topado con un problemilla...

Este problemilla es property, buscando que era y como se usaba he encontrado informacion al respecto que me ha quedado claro qué es.

Ahora bien, intentando ejecutar el siguiente ejemplo:
Código Python:
Ver original
  1. class ser_humano(object):
  2.    
  3.     def __init__(self, edad, altura, peso):
  4.         self.__edad=edad
  5.         self.__altura=altura
  6.         self.__peso=peso
  7.  
  8.     def __getPeso(self):
  9.         return self.__peso
  10.    
  11.     def __setPeso(self, peso = None):
  12.         self.__peso = peso
  13.        
  14.     def __getAltura(self):
  15.         return self.__altura
  16.    
  17.     def __setAltura(self, altura = None):
  18.         self.__altura = altura
  19.        
  20.     def __getEdad(self):
  21.         return self.__edad
  22.    
  23.     def __setEdad(self, edad = None):
  24.         self.__edad = edad
  25.        
  26. peso = property(fget = __getPeso, fset = __setPeso, doc = 'Peso')
  27. edad = property(fget = __getEdad, fset = __setEdad, doc= 'Edad')
  28. altura = property(fget = __getAltura, fset = __setAltura, doc = 'Altura')
  29.    
  30. a = ser_humano(29,1.65,98)
  31. a.peso

Desconozco el porque me tira el siguiente error:
peso = property(fget = __getPeso, fset = __setPeso, doc = 'Peso')
NameError: name '__getPeso' is not defined

¿Por qué dice que no esta definida? ¿Por que es privada?
Estoy usando la ultima versión de Python.
Muchas gracias,
  #2 (permalink)  
Antiguo 30/06/2011, 11:17
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Metodo no definido... ¿por ser privado?

Lo que pasa es que lo tienes mal indentado:
Código Python:
Ver original
  1. class ser_humano(object):
  2.  
  3.     def __init__(self, edad, altura, peso):
  4.         self.__edad=edad
  5.         self.__altura=altura
  6.         self.__peso=peso
  7.  
  8.     def __getPeso(self):
  9.         return self.__peso
  10.  
  11.     def __setPeso(self, peso = None):
  12.         self.__peso = peso
  13.  
  14.     def __getAltura(self):
  15.         return self.__altura
  16.  
  17.     def __setAltura(self, altura = None):
  18.         self.__altura = altura
  19.  
  20.     def __getEdad(self):
  21.         return self.__edad
  22.  
  23.     def __setEdad(self, edad = None):
  24.         self.__edad = edad
  25.  
  26.     peso = property(fget = __getPeso, fset = __setPeso, doc = 'Peso')
  27.     edad = property(fget = __getEdad, fset = __setEdad, doc= 'Edad')
  28.     altura = property(fget = __getAltura, fset = __setAltura, doc = 'Altura')
  29.  
  30. a = ser_humano(29,1.65,98)
  31. print a.peso
  #3 (permalink)  
Antiguo 02/07/2011, 04:51
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Metodo no definido... ¿por ser privado?

Gracias razpeitia una vez más.

Cuando cope ese codigo las funciones estaban mal indentadas... y lo fui indentando poco a poco...pero se me paso eso ultimo :P

Gracias, todo aclarado

Etiquetas: metodo, privado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:12.