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~
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to