returning NotImplemented
Ethan Furman
ethan at stoneleaf.us
Tue May 31 18:18:27 EDT 2011
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.
~Ethan~
More information about the Python-list
mailing list