[IronPython] in operator calls __getitem__ on class that has __len__ and __iter__ defined
Glenn Jones
glenn.k.jones+ipy at gmail.com
Thu Nov 20 16:23:23 CET 2008
Yet another weirdness, but not a blocker for us:
With this object:
class o(object):
def __iter__(self):
print "iter"
return iter([1, 2, 3])
def __getitem__(self, index):
print "getitem"
return [1, 2, 3][index]
def __len__(self):
print "len"
return 3
CPython:
>>> p = o()
>>> 1 in p
iter
True
IronPython 2 source drop 43741:
>>> p = o()
>>> 1 in p
getitem
True
It looks like CPython is treating it like a sequence and IronPython 2 is
treating it like a dict.
We have worked around this by implementing __contains__
Raised as Issue 19678 on CodePlex.
PS: How can we format code blocks on CodePlex?
Glenn & Orestis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20081120/aa873af9/attachment.html>
More information about the Ironpython-users
mailing list