2016-10-07 3 views
4

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'] 

Учитывая результаты Я видел в интерпретаторе, это имеет смысл, но я не могу сказать то же самое для документации.

Является ли это простой ошибкой в ​​документации, или есть где-то, где эти атрибуты действительно будут целыми числами, как обещает документация? Что тут происходит?

+0

Я бы предположил, что константы были изменены с целых чисел на строки в какой-то момент в прошлом без обновления документации. Однако мои умения Mercurial не совсем подтверждают, что сегодня вечером. – chepner

+1

@chepner. Глядя на GitHub, [фиксация 21 августа 2006 года (https://github.com/python/cpython/commit/a9c343d0c354e0aa41674f5c84a5dc28241c7a0c) имеет [uuid.py] (https://github.com/python /cpython/blob/a9c343d0c354e0aa41674f5c84a5dc28241c7a0c/Lib/uuid.py) с тем же списком константных строковых констант, который он имеет сегодня, и что репо больше не возвращается. – TigerhawkT3

+2

Кажется, что ошибка документа, оригинальный внешний вид этого в ветке Python 2.5 на Github показывает, что это всегда было так. Вы отправили ошибку на трекер, чтобы посмотреть на это? –

ответ

2

Это была ошибка в документации.Я представил его в качестве такового в official bug tracker, и она была устранена путем удаления слова «целое»:

Я просто удалить описание типа, так как я думаю, что тип констант здесь не имеет значения.

Смежные вопросы