Gabriel Genellina gagsl-py at yahoo.com.ar
Thu Oct 5 23:34:04 CEST 2006

At Thursday 5/10/2006 13:53, jean.philippe.mague at gmail.com wrote:

>Has anyone ever think about a set wich references its elements weakly ?
>The *easy* solution would provide a WeakSet class with the following
> >>>s=set([a, b])
> >>>ws=WeakSet([b,c])
> >>>(ws&s).__class__() is WeakSet
> >>>s&ws
>TypeError: unsupported operand type(s) for &: 'set' and 'instance'
>the hard olution would  add the following behavior:
> >>>(s&ws).__class__() is WeakSet
>Any hint for the easy solution ?
>for the hard one ?

For s&ws you can define the reversed operators, __rand__ in this case 
(look up in the Python Reference Manual)

 >>> class A(object): pass
 >>> a=A()
 >>> 1&a
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
TypeError: unsupported operand type(s) for &: 'int' and 'A'
 >>> class B(object):
...   def __init__(self, value): self.value = value
...   def __repr__(self): return 'B(%s)' % self.value
...   def __rand__(self, other):
...     return B(self.value&other)
 >>> b=B(3)
 >>> b
 >>> 1&b

Now, managing the weakrefs is up to you...

Gabriel Genellina
Softlab SRL 

Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya! 

More information about the Python-list mailing list