Is there any case where len(someObj) does not call someObj's __len__ function?

magic-methods, python

Solution

If `__len__` returns a length over `sys.maxsize`, `len()` will raise an exception. This isn't true of calling `__len__` directly. (In fact you could return any object from `__len__` which won't be caught unless it goes through `len()`.)

Problem

Is there any case where `len(someObj)` does not call someObj's `__len__` function? I recently replaced the former with the latter in a (sucessful) effort to speed up some code. I want to make sure there's not some edge case somewhere where `len(someObj)` is not the same as `someObj.__len__()`.

Original source