Foros del Web » Programando para Internet » Python »

Creacion de un objeto

Estas en el tema de Creacion de un objeto en el foro de Python en Foros del Web. Hola estoy estudiando POO , tengo un modulo llamado humanos que crea personas , estoy tratando de llamar el objeto desde el script python principal ...
  #1 (permalink)  
Antiguo 07/04/2016, 10:50
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Creacion de un objeto

Hola estoy estudiando POO , tengo un modulo llamado humanos que crea personas , estoy tratando de llamar el objeto desde el script python principal y crear dos new osea dos inits en la clase , uno que permita parametros y otro que permita cargar sin parametros , ya tengo casi todo pero quiero hacer una funcion para destruir el objeto y otro problema es que cuando creo el objeto sin parametros me da error , porque solo reconoce el creador sin parametros

Los codigos :

Home.py

Código Python:
Ver original
  1. import usuarios
  2.  
  3. persona = usuarios.ser_humano(32,1.70,70)
  4.  
  5. print persona.getAltura()
  6.  
  7. persona.destroy()

humanos.py

Código Python:
Ver original
  1. class ser_humano(object):
  2.  
  3.    def __init__(self):
  4.        self.__edad= ""
  5.        self.__altura= ""
  6.        self.__peso= ""     
  7.  
  8.    def __init__(self, edad, altura, peso):
  9.        self.__edad=edad
  10.        self.__altura=altura
  11.        self.__peso=peso
  12.        
  13.    def getPeso(self):
  14.        return self.__peso
  15.  
  16.    def setPeso(self, peso = None):
  17.        self.__peso = peso
  18.  
  19.    def getAltura(self):
  20.        return self.__altura
  21.  
  22.    def setAltura(self, altura = None):
  23.        self.__altura = altura
  24.  
  25.    def getEdad(self):
  26.        return self.__edad
  27.  
  28.    def setEdad(self, edad = None):
  29.        self.__edad = edad
  30.        
  31.    def __destroy__(self, *err):
  32.        self.close()

Error cuando uso el creador sin parametros :

TypeError: __init__() takes exactly 4 arguments (1 given)

Error cuando destruyo el objeto:

AttributeError: 'ser_humano' object has no attribute 'close'

¿ Como resuelvo este problema ?

Última edición por JimmyBrain; 07/04/2016 a las 11:04
  #2 (permalink)  
Antiguo 07/04/2016, 11:07
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Pues no le has puesto ningún método close, por eso falla.

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 07/04/2016, 11:11
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

, pense que asi se destruia el objeto , ¿ como se hace entonces ? ¿ se pueden crear dos constructores com el mismo nombre uno con parametros y otros sin ellos o tengo que ponerles otro nombre ?
  #4 (permalink)  
Antiguo 07/04/2016, 12:33
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Tienes que leer un manual de Python primero, estás suponiendo cosas probablemente de otros lenguajes.

En python no se escriben método distintos para distintas signatures, para eso usas *args y **kwargs. Y la destrucción de un objeto si se usa __destroy__ pero la función close es algo que tu agregas (parece que te visto un hilo de Stackoverflow que tenía una clase con esa función).

Saludos
__________________
Grupo Telegram Docker en Español
  #5 (permalink)  
Antiguo 07/04/2016, 13:56
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

Si , estoy traduciendo desde Java , la ultima pregunta , eh visto que algunos modulos pueden ser llamados asi :

Código Python:
Ver original
  1. import usuarios
  2.  
  3. persona = ser_humano(32,1.70,70)
  4. print persona.getAltura()

¿ Como puedo lograr esto en mi clase ?
  #6 (permalink)  
Antiguo 07/04/2016, 14:26
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Eso ya lo tienes con el segundo __init__, el primero no sirve de nada por que lo estás sobrescribiendo.

Saludos!
__________________
Grupo Telegram Docker en Español
  #7 (permalink)  
Antiguo 07/04/2016, 14:30
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

En realidad no , ya lo quite y sigue dando error.

NameError: name 'ser_humano' is not defined
  #8 (permalink)  
Antiguo 07/04/2016, 14:31
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Lee los errores, eso te dice que la clase no está definida, quizá pusiste mal el nombre u olvidaste el import.

Saludos!
__________________
Grupo Telegram Docker en Español
  #9 (permalink)  
Antiguo 07/04/2016, 14:52
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

se lo que dice el error , ya lo habia solucionado usando "from Usuarios import ser_humano" queria ver si habia una forma mejor o era incorrecto esta forma por eso insisto.

El codigo completo.

home.py

Código Python:
Ver original
  1. from Usuarios import ser_humano
  2.  
  3. persona = ser_humano(32,1.70,70)
  4. print persona.getAltura()

Usuarios.py

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.    def __destroy__(self, *err):
  27.        self.close()
  #10 (permalink)  
Antiguo 07/04/2016, 15:09
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

En serio, necesitas leer un libro de Python.
__________________
Grupo Telegram Docker en Español
  #11 (permalink)  
Antiguo 07/04/2016, 15:18
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

Por lo menos , ¿ podrias decir cual es el error ?
  #12 (permalink)  
Antiguo 07/04/2016, 15:19
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Ahí no tienes ningún error, ¿qué mensaje te da?
__________________
Grupo Telegram Docker en Español
  #13 (permalink)  
Antiguo 07/04/2016, 15:25
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Respuesta: Creacion de un objeto

No importa , no te molesto mas y pregunto en stackoverflow.
  #14 (permalink)  
Antiguo 07/04/2016, 15:32
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Creacion de un objeto

Aver, lo del import dices que resolvió lo del 'not defined', lo de 'close' ya te dije que falta que agregues un método que se llame así, y lo del constructor ya te dije que no los puedes sobrecargar como en Java.

¿qué es lo que falta?
__________________
Grupo Telegram Docker en Español

Etiquetas: objeto, print
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 21:07.