Python interpreter bug
bruno modulix
onurb at xiludom.gro
Fri Oct 7 11:19:28 EDT 2005
alainpoint at yahoo.fr wrote:
> Sorry Fredrik but I don't understand. Just comment out the assert and
> you have different results depending on whether an unrelated sort
> function is defined.
> This seems weird to me !
code snippet:
> from random import choice
> class OBJ:
> def __init__(self,identifier):
> self.id=identifier
> self.allocated=0 # Your problem begins here...
> def __cmp__(self,other):
# it continues here
> return cmp(other.allocated,self.allocated)
> mylist=[OBJ(i) for i in range(20)]
> excluded=[obj for obj in mylist if obj.id>choice(range(20))]
> for obj in mylist:
> if obj in excluded: # and you see it in action here
> assert obj.id in [objt.id for objt in excluded]
> continue
How do you think the "membership" test works ? Could it be possible that
it uses the __cmp__ method ? And if so, how do you think your instances
will compare knowing that your __cmp__ method will return equality for
all the instances in this snippet ?
Just change your __init__ method to:
def __init__(self,identifier):
self.id=identifier
self.allocated=identifier
and rerun the test.
I don't think this is a bug...
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list