[pyar] xDuda con como acceder a un método de un objeto dentro de una lista

Tomas Zulberti tzulberti en gmail.com
Mar Mar 8 17:34:19 ART 2016


2016-03-08 17:24 GMT-03:00 XLJ xlj <xlj707 en gmail.com>:

> # en este modulo tendre la estanteria de libros (listas)
> from libro import Libro
>
> # titulo, anio, autor, paginas, editorial, codigoLibro
>
>
>
> # llenado de la estanteria
> lib1 = Libro("Alicia en el pais de las maravillas", 1999, "lucson marz",
> 200, "MCgraw Hill", "AHSBCr31")
> lib2 = Libro("Peter Pan", 1985, "J. M. Barrie", 206, "A Millennium Fulcrum
> Edition", "HALSDF232")
> lib3 = Libro("Oliver tweest", 1855, "Charles Dikenson", 120, "Porrua",
> "ASDFAS235")
> lib4 = Libro("La Odisea", 1530, "Homero", 950, "Porrua", "ASDFASDF323")
> lib5 = Libro("La iliada ", 1532, "Homero", 1300, "Porrua", "ADSFASD9032")
> lib6 = Libro("La hojarasca", 1960, "Gabriel Garcia Marquez", 180,
> "Editorial Latina", "ADF3235ASD")
>
> libros = [lib1, lib2, lib3, lib4, lib5, lib6]  # 6 libros
>
>
> # test de vaciado de la lista
> def listar():
>     for object in libros:
>     print(object)
>
>
>
>
> listar()
>
> MacBook-Pro-de-X:clases xlj707$ python3 estanteriaMaterial.py
> <libro.Libro object at 0x10133a4a8>
> <libro.Libro object at 0x10133a4e0>
> <libro.Libro object at 0x10133a518>
> <libro.Libro object at 0x10133a588>
> <libro.Libro object at 0x10133a860>
> <libro.Libro object at 0x10133a8d0>
>
>
>
Eso es porque no definiste el __str__ en la clase libro.




>  Y USANDO EL CODIGO ASI :
>
> # en este modulo tendre la estanteria de libros (listas)
> from libro import Libro
>
> # titulo, anio, autor, paginas, editorial, codigoLibro
>
>
>
> # llenado de la estanteria
> lib1 = Libro("Alicia en el pais de las maravillas", 1999, "lucson marz",
> 200, "MCgraw Hill", "AHSBCr31")
> lib2 = Libro("Peter Pan", 1985, "J. M. Barrie", 206, "A Millennium Fulcrum
> Edition", "HALSDF232")
> lib3 = Libro("Oliver tweest", 1855, "Charles Dikenson", 120, "Porrua",
> "ASDFAS235")
> lib4 = Libro("La Odisea", 1530, "Homero", 950, "Porrua", "ASDFASDF323")
> lib5 = Libro("La iliada ", 1532, "Homero", 1300, "Porrua", "ADSFASD9032")
> lib6 = Libro("La hojarasca", 1960, "Gabriel Garcia Marquez", 180,
> "Editorial Latina", "ADF3235ASD")
>
> libros = [lib1, lib2, lib3, lib4, lib5, lib6]  # 6 libros
>
>
> # test de vaciado de la lista
> def listar():
>     for object in libros:
>     print(object.showInfo())
>
>
>
>
> listar()
>
> MacBook-Pro-de-X:clases xlj707$ python3 estanteriaMaterial.py
> Traceback (most recent call last):
>   File "estanteriaMaterial.py", line 27, in <module>
>     listar()
>   File "estanteriaMaterial.py", line 22, in listar
>     print(object.showInfo())
>   File
> "/Users/xlj707/Documents/Misproyectitos-python/ArchivoJson/clases/libro.py",
> line 14, in showInfo
>     print("titulo: ", self.__titulo)
> AttributeError: 'Libro' object has no attribute '_Libro__titulo'
> MacBook-Pro-de-X:clases xlj707$
>
>
>
>
Lo que te dice ese mensaje es que la clase "Libro" no tiene el attributo de
__titulo no tiene el atributo que por ahi pertence a Ejemplar, pero que es
"privado" y por lo tanto no lo podes acceder.

Para accederlo desde libro deberias hacer algo como esto:


print("titulo", self._Ejemplar__titulo)


> On Mar 8, 2016, at 2:15 PM, Tomas Zulberti <tzulberti en gmail.com> wrote:
>
>
>
> 2016-03-08 17:05 GMT-03:00 XLJ xlj <xlj707 en gmail.com>:
>
>> #clase libro
>>
>> from ejemplar import Ejemplar
>>
>> class Libro(Ejemplar):
>>    def __init__(self, titulo, anio, autor, paginas, editorial, codigoLibro):
>>       Ejemplar.__init__(self, titulo, anio, autor, paginas, editorial) #super
>>       self.__codigolibro = codigoLibro #atributo adicional propio de esta clase
>>
>>    def getCodigoLibro():
>>       return self.__codigolibro
>>
>>    def showInfo(self):
>>       print("titulo: ", self.__titulo)
>>       print("anio: ", self.__anio)
>>       print("autor: ", self.__autor)
>>       print("paginas: ", self.__paginas)
>>       print("editorial: ", self.__editorial)
>>       print("codigo de libro: ", self.__codigolibro)
>>
>>
>>
>> # en este modulo tendre la estanteria de libros (listas)
>> from libro import Libro
>>
>> # titulo, anio, autor, paginas, editorial, codigoLibro
>>
>>
>>
>> # llenado de la estanteria
>> lib1 = Libro("Alicia en el pais de las maravillas", 1999, "lucson marz", 200, "MCgraw Hill", "AHSBCr31")
>> lib2 = Libro("Peter Pan", 1985, "J. M. Barrie", 206, "A Millennium Fulcrum Edition", "HALSDF232")
>> lib3 = Libro("Oliver tweest", 1855, "Charles Dikenson", 120, "Porrua", "ASDFAS235")
>> lib4 = Libro("La Odisea", 1530, "Homero", 950, "Porrua", "ASDFASDF323")
>> lib5 = Libro("La iliada ", 1532, "Homero", 1300, "Porrua", "ADSFASD9032")
>> lib6 = Libro("La hojarasca", 1960, "Gabriel Garcia Marquez", 180, "Editorial Latina", "ADF3235ASD")
>>
>> libros = [lib1, lib2, lib3, lib4, lib5, lib6]  # 6 libros
>>
>>
>> # test de vaciado de la lista
>> def listar():
>>     for object in libros:
>>
>>
>>
>>
>>
>> listar()
>>
>> MI DUDA ES LA SIGUIENTE como puedo hacer uso del método showInfor() que
>> es el encargado de listar todas las propiedades del objeto tipo Libro, esto
>> dentro de mi ciclo for
>> ya intente con def listar():
>> for object in libros
>> print(object.showInfo())
>> sin embargo esto me da error !!
>>
>
>
>
> Estaria bueno que pongas el mensaje de error que te aparece.
> Por ejemplo, tu codigo corre en Python 3.
>
> Sin embargo, lo que queres hacer es lo siguiente:
>
> for object in libros:
>     object.showInfo()
>
> No es necesario hacer un print de object.showInfo(), porque el mismo ya lo
> imprime
>
>
>
>>
>> quiero saber como puedo lograr esto aquí en python ya que en java es
>> totalmente posible (haciendo uso del metodo toString)
>>
>>
> En python existe un magic method llamado __str__ (
> http://www.rafekettler.com/magicmethods.html#representations)
>
>
>
>> de antemano gracias!! espero que alguien me pueda orientar
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160308/fb10ec66/attachment-0001.html>


Más información sobre la lista de distribución pyar