On 12/25/05, Armin Rigo
Hi Reinhold,
On Sun, Dec 25, 2005 at 12:37:53PM +0100, Reinhold Birkenfeld wrote:
that nobody fully understands the convoluted code paths of abstract.c any more :-(
Time for a rewrite?
Maybe. Also realize we will have a chance to clean it up when Python 3 comes around since the classic class stuff will be ripped out. That way we might have a chance to streamline the code.
Of course, speaking of a rewrite, PyPy does the "right thing" in these two areas. Won't happen to CPython, though. There are too much backward-compatibility issues with the PyTypeObject structure; I think we're doomed with patching the bugs as they show up.
Looking up in the language reference, I see no mention of NotImplemented in the page about __add__, __radd__, etc. I guess it's a documentation bug as well, isn't it? The current code base tries to implement the following behavior: Returning NotImplemented from any of the binary special methods (__xxx__, __rxxx__, __ixxx__) makes Python proceed as if the method was not defined in the first place.
This is what I always assumed the behaviour was supposed to be, so I am quite happy to go with that. -Brett