Would it be good to use __next__() if it exists, else try next()?
Then the code in typeobject.c (e.g. resolve_slotdups) would have to map tp_iternext to *both* __next__ and next.
This doesn't fix the current 'wart,' however, it could allow moving closer to the desired end. It could cause confusion. For compatability, one would only need to do:
next = __next__
or vica versa.
Not sure this is worth it. But if there is a transition, it could ease the pain.
I don't think it's worth it.
--Guido van Rossum (home page: http://www.python.org/~guido/)