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