访问 int literals 属性
你可能听说 Python 中的所有内容都是对象,甚至是文字。这意味着,例如,7
也是一个对象,这意味着它具有属性。例如,其中一个属性是 bit_length
。它返回表示调用它所需的位数。
x = 7
x.bit_length()
# Out: 3
看到上面的代码有效,你可能会直观地认为 7.bit_length()
也可以正常运行,但却发现它提出了一个问题。为什么?因为解释器需要区分属性访问和浮动数(例如 7.2
或 7.bit_length()
)。它不能,这就是引发异常的原因。
有几种方法可以访问 int
文字的属性:
# parenthesis
(7).bit_length()
# a space
7 .bit_length()
使用两个点(如此 7..bit_length()
)在这种情况下不起作用,因为它创建了 float
文字,而浮点数没有 bit_length()
方法。
当访问 float
文字属性时,这个问题不存在,因为 interperter智能足以知道 float
文字不能包含两个 .
,例如:
7.2.as_integer_ratio()
# Out: (8106479329266893, 1125899906842624)