Hacker News new | ask | show | jobs
by mhenr18 4603 days ago
There's no need to make it not be valid. C++ uses begin() and end() for obtaining iterators to containers, but nothing's stopping you from using those method names for your own purposes.

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.

1 comments

In C++ it's fairly common to be calling begin() and end() on containers, where in Python it's not common to call next(), you let the for loop handle it. It's reasonable to rename a function to something ugly when you're never going to be seeing it.
That's the best time, so that people don't think it's a function they should be calling without understanding exactly what they're doing.
> where in Python it's not common to call next()

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.