In Python, when you have an object you can convert it to an integer using the int
function.
For example int(1.3)
will return 1
. This works internally by using the __int__
magic method of the object, in this particular case float.__int__
.
In Python Fraction
objects can be used to construct exact fractions.
from fractions import Fraction
x = Fraction(4, 3)
Fraction
objects lack an __int__
method, but you can still call int()
on them and get a sensible integer back. I was wondering how this was possible with no __int__
method being defined.
In [38]: x = Fraction(4, 3)
In [39]: int(x)
Out[39]: 1
The
__trunc__
method is used.__float__
does not workThe CPython source shows when
__trunc__
is used.