[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