UUID 模块的文档中写道:
这在2.7.9和3.4.2版本中产生相同的结果,我没有找到任何版本的文档表明这些常量可能是字符串。
我能找到与此问题相关的最相关的搜索结果是该模块的源代码(在SVN或GitHub上),其中包含了这个语句:
UUID.
variant
¶UUID 变体,决定了 UUID 的内部格式。这将是以下整数常量之一: RESERVED_NCS、 RFC_4122、 RESERVED_MICROSOFT 或 RESERVED_FUTURE。
稍后文档又写道:
uuid.
RESERVED_NCS
¶为 NCS 兼容性保留。
uuid.
RFC_4122
¶指定在RFC 4122中给出的 UUID 格式。
uuid.
RESERVED_MICROSOFT
¶为 Microsoft 兼容性保留。
uuid.
RESERVED_FUTURE
¶为将来定义保留。
鉴于此,我期望访问这些属性时会看到整数值。然而:
>>> import uuid
>>> u = uuid.uuid4()
>>> u.variant
'specified in RFC 4122'
>>> uuid.RESERVED_NCS
'reserved for NCS compatibility'
>>> uuid.RFC_4122
'specified in RFC 4122'
>>> uuid.RESERVED_MICROSOFT
'reserved for Microsoft compatibility'
>>> uuid.RESERVED_FUTURE
'reserved for future definition'
这在2.7.9和3.4.2版本中产生相同的结果,我没有找到任何版本的文档表明这些常量可能是字符串。
我能找到与此问题相关的最相关的搜索结果是该模块的源代码(在SVN或GitHub上),其中包含了这个语句:
RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
'reserved for NCS compatibility', 'specified in RFC 4122',
'reserved for Microsoft compatibility', 'reserved for future definition']
在解释器中看到的结果是合理的,但是对于文档来说我不能这么说。
这是一个简单的文档错误吗?还是有地方确实会将这些属性作为整数处理,就像文档所承诺的那样?这里到底发生了什么?