[Python-es] Problemas con clases

Lucas Alvarez alvarezlucas en gmail.com
Dom Abr 28 02:23:54 CEST 2013


Hola gente, estoy dando mis primeros pasos con las clases en python y me
encuentro con ciertos errores que no puedo solucionar...
Si alguien me puede hacer ver como manejar el tipo de error que me larga
les agradeceria....
El enunciado es el siguiente....
Implementar una clase lectura que almacena informacion sobre la lectura de
un determinado libro. Esta clase tiene como variable instancia una
referencia a un  objeto Libro y el numero de la pagina que se esta leyendo.
Modificar para poder almacenar informacion de los libros que va leyendo una
persona.  Implementar los siguientes metodos:
libroLeido(titulo) retorna True o False
darSinopsis(titulo) retorna sinopsis
LeidosAnioEdicion(x) retorna todos los libros leidos que estan leidos y su
año de edicion es una año X recibido por parametro.
darLibrosPorAutor(nombreAutor) retorna los libros leidos y autor coincide.

me larga el error o no... LecturaFinal.Lectura object at 0xb74a77ec Cuando
llamo a librosleidos.darLibros_X_Autor("Jorge")

el codigo que tengo en un archivo es el siguiente.







<code>#!/usr/bin/python
# -*- coding: utf:8 -*-
'''
Created on Apr 17, 2013

@author: manseka
'''


class Libro(object):

    def __init__(self, titulo, cantPag, sinopsis, anoedicion, autor):
        '''
        Constructor
        '''
        self.__titulo = titulo
        self.__cantPag = cantPag
        self.__sinopsis = sinopsis
        self.__anoedicion = anoedicion
        self.__autor = autor


    def get_titulo(self):
        return self.__titulo


    def get_cant_pag(self):
        return self.__cantPag


    def get_sinopsis(self):
        return self.__sinopsis


    def get_anoedicion(self):
        return self.__anoedicion


    def get_autor(self):
        return self.__autor


    def set_titulo(self, value):
        self.__titulo = value


    def set_cant_pag(self, value):
        self.__cantPag = value


    def set_sinopsis(self, value):
        self.__sinopsis = value


    def set_anoedicion(self, value):
        self.__anoedicion = value


    def set_autor(self, value):
        self.__autor =value

    def __str__(self):
        return ("""
        Titulo del Libro:   %s
        Cantidad de Paginas %s
        Año Edicion:        %s
        ······················································
        Sinopsis:  %s
        ······················································
        Autor:
        %s
        ······················································
        """) % (self.get_titulo(), self.get_cant_pag(),
self.get_anoedicion(),self.get_sinopsis(), self.get_autor())
    def devuelveLibro(self):
        return ("""
        Titulo del Libro:   %s
        Cantidad de Paginas %s
        Año Edicion:        %s
        ······················································
        Sinopsis:  %s
        ······················································
        Autor:
        %s
        ······················································
        """) % (self.get_titulo(), self.get_cant_pag(),
self.get_anoedicion(),self.get_sinopsis(), self.get_autor())


class Persona(object):
    def __init__(self, nombre, apellido, tipoDNI, numDNI):
        self.__nombre = nombre
        self.__apellido = apellido
        self.__tipoDNI = tipoDNI
        self.__numDNI = numDNI

    def get_nombre(self):
        return self.__nombre


    def get_apellido(self):
        return self.__apellido


    def get_tipo_dni(self):
        return self.__tipoDNI


    def get_num_dni(self):
        return self.__numDNI


    def set_nombre(self, value):
        self.__nombre = value


    def set_apellido(self, value):
        self.__apellido = value


    def set_tipo_dni(self, value):
        self.__tipoDNI = value


    def set_num_dni(self, value):
        self.__numDNI = value

    def __str__(self):
        return ("""
        Nombre: %s
        Apellido: %s
        Tipo: %s
        DNI nº: %s """) % (self.get_nombre(), self.get_apellido(),
self.get_tipo_dni(), self.get_num_dni())

class Lectura(object):
    def __init__(self, lector, libro, nropag):
        self.__lector =lector
        self.__libro= libro
        self.__nropag= nropag

    def get_lector(self):
        return self.__lector


    def get_libro(self):
        return self.__libro

    def get_nropag(self):
        return self.__nropag


    def set_lector(self, value):
        self.__lector = value


    def set_libro(self, value):
        self.__libro = value

    def set_nropag(self, value):
        self.__nropag = value

    def siguientePagina(self):
        pasar = self.get_nropag() + 1
        self.set_nropag(pasar)

    def retrocederPagina(self):
        anterior = self.get_nropag() - 1
        self.set_nropag(anterior)


class LibroLeido(object):
    def __init__(self):
        self.__librosLeidos=[]

    def get_libros_leidos(self):
        return self.__librosLeidos


    def set_libros_leidos(self, value):
        self.__librosLeidos = value

    def agregaLectura(self, lectura):
        self.get_libros_leidos().append(lectura)

    def libroLeido(self, titulo):
        for i in self.get_libros_leidos()[0].get_libro().get_titulo():
            if self.get_libros_leidos()[0].get_libro().get_titulo() ==
titulo:
                return True
            else:
                return False

    def darSinopsis(self, titulo):
        x=0

        for i in self.get_libros_leidos()[x].get_libro().get_titulo():
            # print "Valor de X ---> ",x
            if self.get_libros_leidos()[x].get_libro().get_titulo() ==
titulo:
                return
self.get_libros_leidos()[x].get_libro().get_sinopsis()
            x = x + 1

    def AnoEdicion(self,edicion):
        x= 1
        i= (len (self.get_libros_leidos()))
        print "Valor de i ---->>>>", i
        for i in self.get_libros_leidos()[x].get_libro().get_titulo():
            # print "Valor de X ---> ",x
            if self.get_libros_leidos()[x].get_libro().get_anoedicion() ==
edicion:

                print """
                Titulo:      %s
                Paginas:     %s
                Sinopsis:    %s
                Año Edicion: %s
                Autor:       %s""" %
(self.get_libros_leidos()[x].get_libro().get_titulo(),self.get_libros_leidos()[x].get_libro().get_cant_pag(),
self.get_libros_leidos()[x].get_libro().get_sinopsis(),self.get_libros_leidos()[x].get_libro().get_anoedicion(),
self.get_libros_leidos()[x].get_libro().get_autor())
                print
"----------------------------------------------------------------"
            #self.get_libros_leidos()[x].get_libro().get_anoedicion()
            x = x + 1


    def AnoEdicion2(self,edicion):
        llibros=[]
        for unaLectura in self.get_libros_leidos():
            objLibro = unaLectura.get_libro()
            anio = objLibro.get_anoedicion()
            print  "aÑos", anio
            if anio == edicion:
                llibros.append(objLibro)

            return llibros


    def darLibros_X_Autor(self, autor):

        librosa=[]
        for unaLectura2 in self.get_libros_leidos():
            objLibro2 = unaLectura2.get_libro()
            autor2 = objLibro2.get_autor()
            print unaLectura2
            if autor2 == autor:
                librosa.append(self.get_libros_leidos().get_libro())

            return str(librosa)

        """
        x= 1
        i= (len (self.get_libros_leidos()))
        print "Valor de i ---->>>>", i
        for i in self.get_libros_leidos()[x].get_libro().get_titulo():
            # print "Valor de X ---> ",x
            if self.get_libros_leidos()[x].get_libro().get_autor() == autor:

                print """
                #  Titulo:      %s
                #  Paginas:     %s
                # Sinopsis:    %s
                # Año Edicion: %s
                # Autor:       %s""" %
(self.get_libros_leidos()[x].get_libro().get_titulo(),self.get_libros_leidos()[x].get_libro().get_cant_pag(),
self.get_libros_leidos()[x].get_libro().get_sinopsis(),self.get_libros_leidos()[x].get_libro().get_anoedicion(),
self.get_libros_leidos()[x].get_libro().get_autor())
                #  print
"----------------------------------------------------------------"
                #self.get_libros_leidos()[x].get_libro().get_anoedicion()
                # x = x + 1
     </code>

y el codigo para probar es....
<code>#!/usr/bin/python
# -*- coding: utf:8 -*-

from LecturaFinal import Libro
from LecturaFinal import Persona
from LecturaFinal import Lectura
from LecturaFinal import LibroLeido

def mostrarLista(l):
    for elem in l:
        print elem



lector1 = Persona("Juan", "Perez","DNI", "22.203.121")
lector2 = Persona("Pedro", "Matam","LC","2.121.212")
autor = Persona("Jorge","Borges","LC", "6.191.212")
autor2 = Persona("Sergio","Borg","LC", "12.191.212")

libro = Libro("El Aleph", "12", "El libro de borges", "2010", autor)
libro2 = Libro("Neuquenia", "1212", "Libro de Neuquen","2010",  autor2)

lectura1 = Lectura(lector1, libro,12)
lectura = Lectura(lector1, libro2,122)
lectura2 = Lectura(lector2, libro2, 67)

librosleidos = LibroLeido()
librosleidos.agregaLectura(lectura1)
librosleidos.agregaLectura(lectura)
librosleidos.agregaLectura(lectura2)

print "Esta Leido?  ---> ", librosleidos.libroLeido("El Aleph")

# print librosleidos.get_libros_leidos()[0].get_libro().get_titulo()
# print librosleidos.get_libros_leidos()[1].get_libro().get_titulo()


print "Sinopsis --->", librosleidos.darSinopsis("El Aleph")
print "Sinopsis --->", librosleidos.darSinopsis("Neuquenia")

print "libros leidos por Año edicon ----->",

l = librosleidos.AnoEdicion2("2010")
mostrarLista(l)
#mostrarLista(librosleidos.get_libros_leidos())
print "libros leidos por Autor: $$$$$$$ -->",
librosleidos.darLibros_X_Autor("Jorge")
#print "libros leidos por anoedicon", librosleidos.AnoEdicion("2010")</code>

cuando lo corro me larga el error

libros leidos por Autor: $$$$$$$ --> <LecturaFinal.Lectura object at
0xb74a77ec>

y solo me larga un libro cuando corro librosleidos x año de edicion...

espero haberme explicado bien y me puedan ayudar.... desde ya agradecido...
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130427/7f23681b/attachment.html>


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