returning NotImplemented

Eric Snow ericsnowcurrently at gmail.com
Tue May 31 18:11:20 EDT 2011


On Tue, May 31, 2011 at 4:18 PM, Ethan Furman <ethan at stoneleaf.us> wrote:

> Eric Snow wrote:
>
>> Looking at the ABC code [1], I noticed that Mapping's __eq__ method can
>> return NotImplemented.  This got me curious as to why you would return
>> NotImplemented and not raise a TypeError or a NotImplementedError.
>>
>
> My understanding is that if your object does not know how to perform the
> desired action you should return NotImplemented; Python will then give the
> other object a chance to perform the operation (after all, it may know how),
> and if the other object also returns NotImplemented then Python itself will
> raise a TypeError.
>
> If the first object were to raise TypeError (or any exception), the second
> object would not get the chance to try.
>
>
RIght.  But the operator code could very well handle the appropriate
exception instead of handling a return value of NotImplemented.  Hence my
further questions regarding performance and identifiability.  My guess is
that it's ultimately because of speed.

-eric


> ~Ethan~
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20110531/ebcdf4d0/attachment-0001.html>


More information about the Python-list mailing list