访问 int literals 属性

你可能听说 Python 中的所有内容都是对象,甚至是文字。这意味着,例如,7 也是一个对象,这意味着它具有属性。例如,其中一个属性是 bit_length。它返回表示调用它所需的位数。

x = 7
x.bit_length()
# Out: 3

看到上面的代码有效,你可能会直观地认为 7.bit_length() 也可以正常运行,但却发现它提出了一个问题。为什么?因为解释器需要区分属性访问和浮动数(例如 7.27.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)