[pyar] almacenar objetos

fisa fisadev en gmail.com
Vie Mayo 10 11:59:52 ART 2013


El día 10 de mayo de 2013 11:53, Miguel Barraza
<correo en miguelbarraza.com.ar> escribió:
> Subject: Re: [pyar] almacenar objetos
>
>
> 2013/5/10 Miguel Barraza <correo en miguelbarraza.com.ar>
>>
>> buenas grupo!, sigo aqui aprendiendo python y probando. ando creando un
>> jueguito para ver los problemas que surgen, para aprender mas de este
>> lenguaje.
>>
>> y llegué a un tema que no encuentro datos en google:
>> comento rapidamente, estoy programando una aventura conversacional (juego
>> por medio de narración por escrito).
>> estaba trabajando en la parte del inventario (los objetos que lleva el
>> personaje) y estaba pensando almacenar esos objetos en un diccionario.
>>
>> ejemplo: manzana, naranja, espada.
>>
>> mi consulta surge: se puede acceder a los métodos de los objetos
>> almacenados, como puedo hacer eso?.
>>
>> ejemplo hago:
>> inventario[manzana] y cargo el objeto aquí
>>
>> y luego si hago: inventario[manzana].comer
>> o: inventario[espada].comer
>>
>> no me está llamando al método "comer" del objeto almacenado en esa clave.
>> en los anteriores casos me tendría que responder con un mensaje:
>>
>> inventario[manzana].comer: te comiste la manzana
>> inventario[espada].comer: no puedes comer eso!
>>
>> si lo llamo con diferentes variables si funciona, pero si cargo todo en un
>> diccionario algo está fallando. ahi otro método para hacer esto?
>> estoy intentando utilizar diccionario así queda cargado en memoria los
>> elementos utilizados y no estar consultando la base de datos por cada
>> elemento.
>> imagino que mi error es porque al pasar de esa forma el método está
>> intentando llamar al método del diccionario y no al del objeto contenido en
>> esa variable, pero no se, quizas mi lógica faye y tenga que utilizar otra
>> forma, por eso consulto.
>> gracias.
>
>
>
> <<ZopeDB es una DB que guarda objetos python crudos,  ...sino mas liviano
> pickle,   ...sino no entendi la consulta  :(>>
>
> ________________________________
>
>
>
> en si no lo deseo guardar, si no almacenar todos en memoria para poder
> interactuar con esos objetos sin tener que estar consultando a la base de
> datos.
> ejemplo, si el personaje lleva:
> una manzana, una espada y una naranja.
> que al cargar el personaje se cargue todos sus objetos en memoria y yo solo
> indicando ejemplo:
> inventario[manzana] puedo llamar al metodo comer y realizar esa acción.
>
> mi pregunta recide de que forma guardar todos los objetos en una lista o
> diccionario para poder luego llamar a sus métodos sin problemas y no tener
> que guardar cada objeto en variables diferentes.
>
> atte, Miguel
>
>

Con meterlos a una lista o diccionario basta, eso no genera ningún
tipo de problema al acceder a sus métodos.
Siempre que tengas una referencia a un objeto, podés usarlo
tranquilamente. No importa si es una variable, u otra cosa lo que te
devuelve la referencia. Mientras tengas la referencia, lo que obtenés
es el objeto, y podés usarlo.

Ejemplos:
* si obtener_persona() me da un objeto persona, entonces puedo hacer
obtener_persona().saludar()
* si mi_lista tiene un objeto persona en la posición 3, entonces puedo
hacer mi_lista[3].saludar()
* si mi_diccionario tiene un objeto persona en la clave "yo", entonces
puedo hacer mi_diccionario["yo"].saludar()
* si mi instancia de mundo tiene una propiedad rey que es un objeto
persona, entonces puedo hacer mundo.rey.saludar()
* etc.

--
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list