python解释器无效_Python解释器错误

1586010002-jmsa.png

Hello,

I came accross what i think is a serious bug in the python interpreter.

Membership testing seems not to work for list of objects when these

objects have a user-defined __cmp__ method.

It is present in Python 2.3 and 2.4. I don''t know about other versions.

The following code illustrates the bug:

from random import choice

class OBJ:

def __init__(self,identifier):

self.id=identifier

self.allocated=0

def __cmp__(self,other):

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:

assert obj.id in [objt.id for objt in excluded]

continue

Running the above snippet will tr

你可能感兴趣的:(python解释器无效)