2017-11-22 2 views
0

None singletone 참조 경우 NoneType 가변 검사되고 테스트하는 commom 방법의 변수를 비교 :적절한 방법 없음

이러한 접근법은있어서 None 확인하는 유일한 방법으로서 추천
test_var is None 

PEP-8에 : 또는 가 아니라 결코 평등 운영자입니다 함께 없음 같은 싱글에

비교 항상 수행해야합니다.

isinstance(test, type(None)) 

이 방법은 OK 보이지만, 간단하고 읽을 건설이 isinstance로 대체 될 수 이유는 확실히 알아낼 수 없습니다 :

가끔 있지만 나는 다른 소스에서 다음 테스트를 찾을 수 있습니다. 어떤 경우에는 더 유용할까요 아니면 codestyle이라고 할 수 있습니까?

UPD : 유일한 NoneType 정말 유용 (지금까지) 찾을 수 isinstance으로 확인 :

isinstance(None, (NoneType, str, float)) 
+1

일부 프로그래머는 오류 메시지에서 'NoneType'을보고 문제를 제대로 이해하지 않고 테스트하기로 결정했습니다. 이점이 없습니다. – user2357112

+1

https://media1.tenor.com/images/fb50f8dd802894fce6bdafef59ddd84d/tenor.gif –

+0

또한'type (test) == None .__ class__'을 할 수 있으며 작동 할 것입니다. 요컨대, 개발자는 가능한 한 어떤 방법 으로든 솔루션을 얻을 수 있지만, 항상 그 뒤에 이유가 있음을 의미하지는 않습니다. –

답변

4

아니, 그 구조를 사용하는 이유는 결코있다.

NoneType을 하위 클래스로 지정할 수 없습니다. 이 테스트를 통과 할 수있는 유일한 객체는 None 싱글 톤입니다. 그 행은 아마이 사실을 모르는 사람들이 써서 아마도 하위 클래스를 테스트 할 필요가 있다고 생각했습니다.