[pyar] Operaciones sobre conjuntos y clases propias

Pablo Ventura pablogventura en gmail.com
Mar Oct 16 11:43:05 ART 2012


Muchísimas gracias Hernan! Ahora anduvo perfecto!

Saludos!

El 16 de octubre de 2012 08:51, Hernan Grecco <hernan.grecco en gmail.com>escribió:

> Hola Pablo,
>
> > Tengo instancias de una clase propia (DF) que están dentro de un
> conjunto, y
> > las operaciones como preguntar si dos conjuntos son disjuntos o el
> operador
> > "in" no me funcionan. Supongo que es porque no puede comparar bien los
> > elementos a pesar de que yo implementé en DF el método eq.
>
> Seguramente no implementaste el metodo __hash__. No se requiere cuando
> buscas eun elemento en una tupla (ahi se usa __eq__), pero si cuando
> lo buscas en un set o un diccionario. Compara las clases A y B mas
> abajo
>
> >>> class A(object):
> ...  def __init__(self, value):
> ...   self.value = value
> ...  def __eq__(self, other):
> ...   return self.value == other.value
> ...  def __hash__(self):
> ...   return hash(self.value)
>
> >>> A(1) in (A(1), A(2)) # busca en tupla
> True
>
> >>> A(1) in {A(1), A(2)} # busca en set
> True
>
> >>> class B(object):
> ...  def __init__(self, value):
> ...   self.value = value
> ...  def __eq__(self, other):
> ...   return self.value == other.value
>
> >>> B(1) in (B(1), B(2))  # busca en tupla
> True
>
> >>> B(1) in {B(1), B(2)} # busca en set
> False
>
> -----
>
> Un saludo,
>
> Hernan
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20121016/bd8a57ce/attachment.html>


More information about the pyar mailing list