documentation on the uuid
module говорит:Когда бы вариант UUID был целым числом?
UUID.
variant
¶идентификатор UUID вариант, который определяет внутреннюю расположение UUID. Это будет одним из целочисленных констант RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, или RESERVED_FUTURE.
И позже:
uuid.
RESERVED_NCS
¶Зарезервировано для совместимости NCS.
uuid.
RFC_4122
¶Задает расположение UUID, приведенные в RFC 4122.
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']
Учитывая результаты Я видел в интерпретаторе, это имеет смысл, но я не могу сказать то же самое для документации.
Является ли это простой ошибкой в документации, или есть где-то, где эти атрибуты действительно будут целыми числами, как обещает документация? Что тут происходит?
Я бы предположил, что константы были изменены с целых чисел на строки в какой-то момент в прошлом без обновления документации. Однако мои умения Mercurial не совсем подтверждают, что сегодня вечером. – chepner
@chepner. Глядя на GitHub, [фиксация 21 августа 2006 года (https://github.com/python/cpython/commit/a9c343d0c354e0aa41674f5c84a5dc28241c7a0c) имеет [uuid.py] (https://github.com/python /cpython/blob/a9c343d0c354e0aa41674f5c84a5dc28241c7a0c/Lib/uuid.py) с тем же списком константных строковых констант, который он имеет сегодня, и что репо больше не возвращается. – TigerhawkT3
Кажется, что ошибка документа, оригинальный внешний вид этого в ветке Python 2.5 на Github показывает, что это всегда было так. Вы отправили ошибку на трекер, чтобы посмотреть на это? –