[pyar] Duda acerca de sets
Lucas Liendo
mindmaster en gmail.com
Dom Ene 29 02:28:34 ART 2012
Hola a todos ! Tengo una duda que no puedo resolver, necesito usar
conjuntos para mantener una coleccion de objetos, y mas tarde realizar una
union, el inconveniente que estoy teniendo se encuentra al realizar la
comparacion de 2 objetos. Aca les paso el ejemplo que muestra el
funcionamiento no esperado :
class Obj(object) :
def __init__(self, id, desc) :
self._id = id
self._desc = desc
@property
def id(self) :
return self._id
def __eq__(self, other) :
print "__eq__"
return self.id == other.id
if __name__ == "__main__" :
o1 = Obj(1, "desc1")
o2 = Obj(1, "desc1")
l = []
l.append(o1)
if o2 not in l :
l.append(o2)
print l
s = set()
s.add(o1)
if o2 not in s :
s.add(o2)
print s
Una salida de prueba arroja :
__eq__
[<__main__.Obj object at 0x2972c10>]
set([<__main__.Obj object at 0x2972c10>, <__main__.Obj object at
0x2972c50>])
En el programa de prueba para la lista (l) la comparacion se realiza
correctamente (ingresa a __eq__ como es esperado) y la lista posee un unico
elemento como debe ser. En el segundo caso intento hacer lo mismo sobre un
set (s) pero se puede ver que terminan ingresando los 2 objetos a la
coleccion, lo cual es incorrecto. ¿Sera necesario redifinir algun metodo
adicional?
--
Saludos,
Lucas.
_
__("<
\__/
^^
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120129/03601b70/attachment.html>
More information about the pyar
mailing list