__ is basically a namespace for official language extensions. How would you suggest they do it? Prevent "next()" from being a valid method name?
It's just that if you want to use a few new language niceties like range-based for loops then you'll need to conform to that convention.
In fact it should never happen, that's what the `iter` and `next` builtins are for. The only use case for calling __next__ by hand is iffy as hell, it's overloading it while inheriting from an iterator.