On 07/05/2010 16:37, VanL wrote:
Howdy all -
I have an app where I am using functools.partial to bundle up jobs to
do, where a job is defined as a callable + args. In one case, I wanted
to keep track of whether I had previously seen a job, so I started
putting them into a set... only to find out that partials never test
equal to each other:
import operator
from functools import partial
p1 = partial(operator.add)
p2 = partial(operator.add)
p1 == p2
False
seen = set();seen.add(p1)
p2 in seen
False
I created a subclass of functools.partial that provides appropriate
__eq__ and __hash__ methods, so that this works as expected. I called
the subclass a Job:
j1 = Job(operator.add)
j2 = Job(operator.add)
j1 == j2
True
seen = set();seen.add(j1)
j2 in seen
True
j1 is j2
False
While I was at it, I also added a nice repr. Would this group be
interested in a patch, or is this not interesting?
Sounds good to me. Could you post the patch to http://bugs.python.org
please.
Michael Foord
Thanks,
Van
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk
--
http://www.ironpythoninaction.com/
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com