On Tue, May 31, 2011 at 4:18 PM, Ethan Furman <et...@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~ >
-- http://mail.python.org/mailman/listinfo/python-list