[ python-Bugs-1117757 ] "in" operator bug ?

SourceForge.net noreply at sourceforge.net
Mon Feb 7 15:56:02 CET 2005


Bugs item #1117757, was opened at 2005-02-07 04:16
Message generated for change (Comment added) made by tim_one
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1117757&group_id=5470

Category: Python Interpreter Core
>Group: Not a Bug
>Status: Closed
>Resolution: Invalid
Priority: 5
Submitted By: Andrea Bolzonella (bolzonella)
Assigned to: Nobody/Anonymous (nobody)
Summary: "in" operator bug ?

Initial Comment:
my python : 
Python 2.4 (#1, Dec  8 2004, 18:57:30) 
[GCC 3.3.3 (SuSE Linux)] on linux 
 
>>class C(object): 
>>   def __getitem__ (self, name): 
>>         return 1 
 
>> c =C() 
 
>> 'a' in c 
 
here python never returns and CPU 100% 
 
this version works: 
>>class C(object): 
>>   def __getitem__ (self, name): 
>>         raise StopIteration 
 
>> c =C() 
 
>> 'a' in c 
False 

----------------------------------------------------------------------

>Comment By: Tim Peters (tim_one)
Date: 2005-02-07 09:56

Message:
Logged In: YES 
user_id=31435

Not a bug.  See the docs, or ask on comp.lang.python, for 
how __getitem__ works.  Your original C is a class such that c
[i] == 1 for any instance c and any subscript i.  So "1 in c" 
will return True quickly, but nothing else can succeed.  Add

	if name % 100000 == 0:
		print 'getting', name

at the start of your original __getitem__ for a clue.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1117757&group_id=5470


More information about the Python-bugs-list mailing list