Foros del Web » Programando para Internet » Python »

Record ¿exite?

Estas en el tema de Record ¿exite? en el foro de Python en Foros del Web. Estoy siguiendo un ejercicio del libro 'Introducción a la programación con Python', es un pdf. Es para encarar el asunto de los objetos, pero me ...
  #1 (permalink)  
Antiguo 31/07/2008, 05:17
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Record ¿exite?

Estoy siguiendo un ejercicio del libro 'Introducción a la programación con Python', es un pdf. Es para encarar el asunto de los objetos, pero me tira un error. El código es éste:


Código:
from record import record

class persona(record):
    nombre = ''
    dni = ''
    edad = 0

juan = persona(nombre='Juan',dni='23456897',edad=20)
ana = persona(nombre='Ana',dni='20987230',edad=28)

def mostrar_persona(persona):
    print 'Nombre: '+persona.nombre
    print 'dni: '+persona.dni
    print 'Edad: '+persona.edad
    
mostrar_persona(juan)
mostrar_persona(ana)
Me dice que record no es un módulo o algo así.

Código:
>>> from record import record

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    from record import record
ImportError: No module named record
¿En qué estoy fallando? ¿Hay alguna forma de sacar el código adelante?

Suerte.
  #2 (permalink)  
Antiguo 31/07/2008, 07:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Record ¿exite?

El módulo al que haces referencia no es estándar.

Véase: http://docs.python.org/modindex.html
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 02/08/2008, 05:34
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Record ¿exite?

Si, es verdad, incluso una líneas más arriba dice de dónde bajar ese módulo; no lo había visto, me fui crudito al ejemplo. Pero encontré en otro libro la solución.

Código:
from datetime import date

class persona:
    def __init__(self,nombre,dni,dia,mes,anio):
        self.nombre = nombre
        self.dni = dni
        self.nace_dia = dia
        self.nace_mes = mes
        self.nace_anio = anio

    def edad(self):
        nacimiento = date(self.nace_anio,self.nace_mes,self.nace_dia)
        dia_de_hoy = date.today()
        edad = dia_de_hoy.year - nacimiento.year
        return str(edad)
    
def mostrar_persona(persona):
    print 'Nombre: '+ persona.nombre
    print 'dni: '+ persona.dni
    sus_anios = persona.edad
    print 'Edad: '+ persona.edad()
    
juan = persona('Juan','23456897',6,5,1967)
ana = persona('Ana','20987230',12,10,1975)
    
mostrar_persona(juan)
mostrar_persona(ana)
Incluso me puse a jugar en el tipo de dato "datetime"
Al código:

Código:
nacimiento = date(self.nace_anio,self.nace_mes,self.nace_dia)
¿no hay una forma más elegante de hacerlo? ¿hay que repetir el "self" a cada rato?
  #4 (permalink)  
Antiguo 04/08/2008, 10:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Record ¿exite?

Sí, debes poner el self ya que eso indica al intérprete que te estás refiriendo a la clase actual. Si te molesta tener que escribirlo cada vez puedes asignarlo a una variable más corta:
Código PHP:
self 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/08/2008, 05:20
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Record ¿exite?

Listo, gracias. También voy a probar reemplazando "self" por "persona".
  #6 (permalink)  
Antiguo 07/08/2008, 05:32
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Record ¿exite?

No cambies self por persona así tan a la ligera. No son lo mismo.

self es una referencia al objeto actual, a la instancia que se ha creado.
persona es la clase.
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 23:07.