[Zope3-dev] __contains__ and acquisition problem?
Florent Guillaume
fg at nuxeo.com
Fri May 12 20:38:11 EDT 2006
Could anybody shed some light on what's happening here:
>>> from Acquisition import Implicit
>>> class Impl(Implicit):
... pass
>>> class C(Implicit):
... def __getitem__(self, key):
... print 'getitem', key
... if key == 4:
... raise IndexError
... return key
... def __contains__(self, key):
... print 'contains', repr(key)
... return key == 5
The class by itself behaves as expected:
>>> c = C()
>>> 5 in c
contains 5
True
>>> 3 in c
contains 3
False
Let's put c in the context of i:
>>> i = Impl()
>>> i.c = c
Now why is the following happening? Why is __contains__ not used?
>>> 3 in i.c # c.__of__(i)
getitem 0
getitem 1
getitem 2
getitem 3
True
>>> 5 in i.c
getitem 0
getitem 1
getitem 2
getitem 3
getitem 4
False
--
Florent Guillaume, Nuxeo (Paris, France) Director of R&D
+33 1 40 33 71 59 http://nuxeo.com fg at nuxeo.com
More information about the Zope3-dev
mailing list