On Thu, Oct 28, 2021 at 9:05 PM Steven D'Aprano <st...@pearwood.info> wrote:
>
> On Thu, Oct 28, 2021 at 05:25:52PM +1100, Chris Angelico wrote:
>
> > But the "in" operator isn't built on iteration, so that would be 
> > in-consistent.
>
> "In-"consistent, heh :-)

Couldn't resist.

>     >>> a = iter("abcde")
>     >>> a.__contains__
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>     AttributeError: 'str_iterator' object has no attribute '__contains__'
>     >>> 'b' in a
>     True
>     >>> list(a)
>     ['c', 'd', 'e']
>
> https://docs.python.org/3/reference/expressions.html#membership-test-operations
>
> The "in" operator is built on iteration, but can be overridden by the
> `__contains__` method.
>

Ah, my bad. Didn't realise that it has a default implementation like
that. But still, the fundamental here is that it can and often will be
overridden.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/DNB23XF2UYH5CBKVBXF2HPTUMM6QRWJO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to