2013-03-07 1 views

답변

7

UUID() 생성자는 제기 중 하나 TypeError 또는 ValueError, A의 통과가 hex, bytes는, bytes_le는, fields, 또는 int 옵션이 TypeError를 제기의 전달하지

전달 된 내용에 따라.

,

>>> uuid.UUID() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 129, in __init__ 
    raise TypeError('need one of hex, bytes, bytes_le, fields, or int') 
TypeError: need one of hex, bytes, bytes_le, fields, or int 
>>> uuid.UUID('abcd') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 134, in __init__ 
    raise ValueError('badly formed hexadecimal UUID string') 
ValueError: badly formed hexadecimal UUID string 
>>> uuid.UUID(bytes='abcd') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 144, in __init__ 
    raise ValueError('bytes is not a 16-char string') 
ValueError: bytes is not a 16-char string 

: 유효하지 않은 값이 ValueError 제기

아니요이 자동으로 실패합니다. 확실히 None을 반환하지 않습니다. myUUIDUUID 인스턴스로 설정되었거나 예외가 발생했습니다.

+0

내 질문의 두 번째 부분은 어떻게됩니까? 'myStatus'가 False와 동일한 상황이 있습니까? – zakdances

+0

@yourfriendzak : 아니요, 여러분이'UUID' 인스턴스를 얻거나 예외를 발생시키기 때문입니다. –

1

UUID class__new__을 덮어 쓰지 않으므로 uuid.UUID 인스턴스가 아닌 다른 것을 반환 할 수는 없습니다.

모듈에 의해 제공된 UUID 팩터 리인 uuid1에서 uuid4까지의 팩터 리로 인해 None을 반환하는 버그가있을 수 있습니다. 그들의 implementation에 대략적인 눈으로 판단 할 때, 그러한 버그는 보이지 않습니다. UUID 객체가 어떤 결함으로 인해 None이든간에 uuid 모듈은 믿을만한 범인이 아닙니다.

+0

편의상 모든 메소드는'UUID' 인스턴스를 반환하거나 예외를 발생시킵니다. 아무도 '없음'을 반환 할 가능성은 없습니다. –

+0

@MartijnPieters 동의했다. 그러나 확실하게하기 위해 각각의 코드를 연구해야한다. 반면에, 클래스가'__new__'을 정의하지 않는다는 사실 (또는 메타 클래스를 지정)에 의해 구성이 명확합니다. – user4815162342

+0

그것이 내가 한 일입니다. 기능은 충분히 간단합니다. 나는 확신한다. :-) –