В Python, когда у вас есть объект, вы можете преобразовать его в целое число с помощью функции int
.Объект фракции не имеет __int__, но int (Fraction (...)) все еще работает
Например int(1.3)
вернет 1
. Это работает внутри, используя магический метод объекта __int__
, в данном конкретном случае float.__int__
.
В Python Fraction
объекты могут быть использованы для создания точных фракций.
from fractions import Fraction
x = Fraction(4, 3)
Fraction
объектов испытывают недостаток в __int__
метод, но вы все еще можете назвать int()
на них и получить разумное число обратно. Мне было интересно, как это было возможно без определения метода __int__
.
In [38]: x = Fraction(4, 3)
In [39]: int(x)
Out[39]: 1
Мой друг нашел ссылку на источник CPython, который показывает, когда приходит '__trunc__'. Я собираюсь отредактировать его в вашем ответе, если вы не возражаете. – Ffisegydd
Интересно, что это не где-нибудь в документах Python - вместо этого единственная ссылка на него находится на PEP 3141: https://www.python.org/dev/peps/pep-3141/ – jsbueno