id de objetos

Chema Cortes py en ch3m4.org
Mie Abr 30 01:10:04 CEST 2008


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()

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.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/python-es/attachments/20080430/2a9cb167/attachment.pgp>
------------ 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