[Python-Dev] PEP 0424: A method for exposing a length hint
Christian Heimes
lists at cheimes.de
Sun Jul 15 16:56:39 CEST 2012
Am 15.07.2012 16:39, schrieb Mark Shannon:
> 1. Don't implement it at all.
>
> 2. Implement __length_hint__() but don't want to return any value.
> Either raise an exception (TypeError) -- As suggested in the PEP.
> or return NotImplemented -- my preferred option.
How is this different from "don't know"? What's the use case for knowing
that the object doesn't want to say anything or doesn't know its
possible length.
> 3. Return a "don't know" value:
> Returning 0 would be fine for this, but the VM might want to respond
> differently to "don't know" and 0.
How about None? It's the logical choice, simple and easy to test for in
Python and C code.
0 is a valid number for "I know that's I'll return nothing".
> 4. Infinite iterator:
> Could return float('inf'), but given this is a "hint" then
> returning sys.maxsize or sys.maxsize + 1 might be OK.
> Alternatively raise an OverflowError
Too complex, hard to remember and even harder to check for. Since a
length is always positive or zero, -1 is a good return value for infinite.
> a) Don't want to return any value or "don't know": return NotImplemented
+1
> b) For infinite iterators: raise an OverflowError
-1, I'm for -1. ;) I'm not a fan of using exception for valid and
correct return values.
> c) All other cases: return an int or a type with a __index__() method.
+1
Christian
More information about the Python-Dev
mailing list