id de objetos

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Mie Abr 30 05:16:12 CEST 2008


El día 29 de abril de 2008 19:10, Chema Cortes <py en ch3m4.org> escribió:
> El Tuesday 29 April 2008 23:04:15 Milton Galo Patricio Inostroza Aguilera
>  escribió:
>
> > Hola:
>  >
>  >    Se necesito en mi aplicaci´on poder marcar cada objeto del tipo [],
>  > {}, () con un id ´unico en mi programa.
>  >
>  >    Leyendo la documentacion me encontre con la funcion id() la cual
>  > retorna un identificador que es la direccion de memoria que utiliza
>  > este objeto.
>  >
>  >    Las preguntas son:
>  >
>  > 1.- sin tomar en cuenta los strings, int, long, etc, cual es la
>  > probabilidad que un id se repita para distintas tuplas por ejemplo?
>
>  En principio, sólo puedes estar seguro de que los objetos que están
>  referenciados vayan a tener un id único. En cuanto el recolector de basura
>  libere la memoria, es muy probable que se vuelvan a reutilizar los mismos
>  ids.
>
>
>
>  > 2.- es posible modificar la declaracion de estos objetos para
>  > incluirles un identificador ´unico...por lo que se estas son clases
>  > cpython...pero me seria interesante ver como son construidas, en donde
>  > debo buscar?
>
>  Se me ocurre un código "fast&dirty":
>
>  class UID(object):
>   def __init__(self,*args,**kw):
>     from uuid import uuid4
>     self.__uid=uuid4()
>     super(UID,self).__init__(*args,**kw)
>   def _getUID(self):
>     return self.__uid
>
>  Se podría usar así:
>
>  class TuplaUID(tuple,UID):
>   pass
>
>  t=TuplaUID( (1,2,3,4,5) )
>  print t._getUID()

Esa es la idea, pero como puedo hacer eso mismo para el tipo de datos
tuple??...es decir derechamente hacer un hacking o algo en python para
que los objetos obtengan ese atributo id unico en el sistema??...se
que lo que estoy planteando es totalmente anti-pythonico si se pudiera
decir de alguna forma, pero realmente lo necesito para lo que estamos
construyendo {es algo para la academia}

>
>  Se garantiza que ningún UUID generado se repetirá hasta pasado el año 3603,
>  siempre que no se haya sobrepasado la velocidad de generación de 10 millones
>  de uuids por segundo en la misma máquina.


Excelente!!!, alguien me podria ayudar a ver la implementacion de
tuple, list y dict...que al parecer estan implementados en c si es que
no me equivoco, gracias

>
> _______________________________________________
>  Lista de correo Python-es
>  http://listas.aditel.org/listinfo/python-es
>  FAQ: http://listas.aditel.org/faqpyes
>



-- 
Milton Inostroza Aguilera
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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