[pyar] xDuda con como acceder a un método de un objeto dentro de una lista
XLJ xlj
xlj707 en gmail.com
Mar Mar 8 17:41:03 ART 2016
COMO SE define el __str__ en la calse Libro ????
ya logre listar todo, mi error era que en cada clase hija estaba escribiendo nuevamente el método showInfo y esto no era necesario ya que la clase padre Ejemplar ya cuenta con el.
MacBook-Pro-de-X:clases xlj707$ python3 estanteriaMaterial.py
titulo: Alicia en el pais de las maravillas
anio: 1999
autor: lucson marz
paginas: 200
editorial: MCgraw Hill
None
titulo: Peter Pan
anio: 1985
autor: J. M. Barrie
paginas: 206
editorial: A Millennium Fulcrum Edition
None
titulo: Oliver tweest
anio: 1855
autor: Charles Dikenson
paginas: 120
editorial: Porrua
None
titulo: La Odisea
anio: 1530
autor: Homero
paginas: 950
editorial: Porrua
None
titulo: La iliada
anio: 1532
autor: Homero
paginas: 1300
editorial: Porrua
None
titulo: La hojarasca
anio: 1960
autor: Gabriel Garcia Marquez
paginas: 180
editorial: Editorial Latina
None
AHORA LO QUE NO PUEDO HACER ES INGRESAR al getter propio de libro que es getCodigoLibro(): return self.__codigolibro , el cual es un atributo propio solo de la clase Libro
> On Mar 8, 2016, at 2:34 PM, Tomas Zulberti <tzulberti en gmail.com> wrote:
>
>
>
> 2016-03-08 17:24 GMT-03:00 XLJ xlj <xlj707 en gmail.com <mailto: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 <mailto:tzulberti en gmail.com>> wrote:
>>
>>
>>
>> 2016-03-08 17:05 GMT-03:00 XLJ xlj <xlj707 en gmail.com <mailto: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 <http://www.rafekettler.com/magicmethods.html#representations>)
>>
>>
>> de antemano gracias!! espero que alguien me pueda orientar
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
>> http://listas.python.org.ar/listinfo/pyar <http://listas.python.org.ar/listinfo/pyar>
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/ <http://www.python.org.ar/>
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar <http://www.usla.org.ar/>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
>> http://listas.python.org.ar/listinfo/pyar <http://listas.python.org.ar/listinfo/pyar>
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/ <http://www.python.org.ar/>
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar <http://www.usla.org.ar/>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
> http://listas.python.org.ar/listinfo/pyar <http://listas.python.org.ar/listinfo/pyar>
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/ <http://www.python.org.ar/>
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar <http://www.usla.org.ar/>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
> http://listas.python.org.ar/listinfo/pyar <http://listas.python.org.ar/listinfo/pyar>
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/ <http://www.python.org.ar/>
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar <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/3c09c3f1/attachment-0001.html>
Más información sobre la lista de distribución pyar