Python 分数对象不';我没有整数,但整数(分数(…)仍然有效
在Python中,当您拥有一个对象时,可以使用Python 分数对象不';我没有整数,但整数(分数(…)仍然有效,python,int,fractions,python-internals,Python,Int,Fractions,Python Internals,在Python中,当您拥有一个对象时,可以使用int函数将其转换为整数 例如int(1.3)将返回1。这通过使用对象的\uuuuu int\uuuu魔术方法在内部工作,在这种特殊情况下是float.\uuuu int\uuu 在Python中,可以使用对象来构造精确的分数 from fractions import Fraction x = Fraction(4, 3) Fraction对象缺少\uuuu int\uuu方法,但您仍然可以对其调用int(),并返回一个合理的整数。我想知道在没有
int
函数将其转换为整数
例如int(1.3)
将返回1
。这通过使用对象的\uuuuu int\uuuu
魔术方法在内部工作,在这种特殊情况下是float.\uuuu int\uuu
在Python中,可以使用对象来构造精确的分数
from fractions import Fraction
x = Fraction(4, 3)
Fraction
对象缺少\uuuu int\uuu
方法,但您仍然可以对其调用int()
,并返回一个合理的整数。我想知道在没有定义\uuu int\uu
方法的情况下,这是怎么可能的
In [38]: x = Fraction(4, 3)
In [39]: int(x)
Out[39]: 1
使用
\uuu trunc\uu
方法
>>> class X(object):
def __trunc__(self):
return 2.
>>> int(X())
2
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>> class X(object):
def __float__(self):
return 2.
>>> int(X())
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
int(X())
TypeError: int() argument must be a string, a bytes-like object or a number, not 'X'
>>X类(对象):
定义浮点数(自):
返回2。
>>>int(X())
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
int(X())
TypeError:int()参数必须是字符串、类似于对象的字节或数字,而不是“X”
显示何时使用\uuuuu trunc\uuuuu
。我的一个朋友找到了一个指向CPython源代码的链接,该链接显示何时使用\uuuuuu trunc\uuuuu
。如果你不介意的话,我将把它编辑到你的答案中。有趣的是,Python文档中没有这一点——相反,对它的唯一引用是在PEP 3141上: