[Python-Dev] The role of NotImplemented: What is it for and when should it be used?

Guido van Rossum guido at python.org
Mon Nov 3 19:00:24 CET 2014


That must be so that an immutable type can still implement __iop__ as an
optimization.

On Mon, Nov 3, 2014 at 9:10 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:

> On Mon, 3 Nov 2014 09:05:43 -0800
> Guido van Rossum <guido at python.org> wrote:
> > Sorry, was too quick.  For immutable types __iop__ may not exist and then
> > the fallback machinery should work normally using NotImplemented. But if
> > __iop__ exists it can choose not to allow __rop__, because the type would
> > presumably change. This is probably more predictable. I don't even know
> if
> > the byte code interpreter looks for Not implemented from __iop__.
>
> Apparently it can tell it to fallback on __op__:
>
> >>> class C(list):
> ...   def __iadd__(self, other):
> ...     print("here")
> ...     return NotImplemented
> ...
> >>> c = C()
> >>> c += [1]
> here
> >>> c
> [1]
> >>> type(c)
> <class 'list'>
>
>
> Regards
>
> Antoine.
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>



-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20141103/96c612e7/attachment.html>


More information about the Python-Dev mailing list