[Python-ideas] Is there a reason some of the PyLong_As* functions don't call an object's __int__?
Nick Coghlan
ncoghlan at gmail.com
Sat Dec 9 02:09:05 EST 2017
On 8 December 2017 at 22:33, Erik Bray <erik.m.bray at gmail.com> wrote:
> In other words, there are probably countless other cases in the stdlib
> at all where it "doesn't make sense" to accept a float, but that
> otherwise should accept objects that can be coerced to int without
> having to manually wrap those objects with an int(o) call.
Updating these to call __index__ is fine (since that sets the
expectation of a *lossless* conversion to an integer), but updating
them to call __int__ generally isn't (since that conversion is allowed
to be lossy, which may cause surprising behaviour).
Indexing & slicing were the primary original use case for that
approach (hence the method name), but it's also used for sequence
repetition, and other operations.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list