프로젝트에서는 각 인터페이스에서 클라이언트가 전달한 매개변수 유형을 확인합니다. 확인에 실패하면 "매개변수 오류" 오류 코드가 클라이언트에 반환됩니다.
이는 디버깅을 용이하게 할 뿐만 아니라 견고성도 향상시킵니다. 클라이언트는 부정 행위를 할 수 있으므로 클라이언트가 쉽게 전달한 매개 변수를 신뢰하지 마십시오.
type 함수를 사용하여
>>type('foo') == str
True
>>type (2.3) in (int, float)True유형을 결정하는 type()이 있는데 왜 isinstance()가 있나요? 명백한 차이점은 하위 클래스를 결정하는 것입니다. type()은 하위 클래스를 상위 유형으로 간주하지 않습니다. isinstance()는 하위 클래스를 상위 클래스 유형으로 간주합니다. 천 마디 말은 1야드의 가치가 있습니다.class Foo(object): pass class Bar(Foo): pass print type(Foo()) == Foo print type(Bar()) == Foo print isinstance(Bar(),Foo) class Foo(object): pass class Bar(Foo): pass print type(Foo()) == Foo print type(Bar()) == Foo print isinstance(Bar(),Foo) 输出 True False True구식 클래스와 신형 클래스의 type() 결과가 다르다는 점에 유의해야 합니다. 옛날식 수업은 다
.
class A: pass class B: pass class C(object): pass print 'old style class',type(A()) print 'old style class',type(B()) print 'new style class',type(C()) print type(A()) == type(B()) class A: pass class B: pass class C(object): pass print 'old style class',type(A()) print 'old style class',type(B()) print 'new style class',type(C()) print type(A()) == type(B()) 输出 old style class <type 'instance'> old style class <type 'instance'> new style class <class '__main__.C'> Truetype보다 isinstance가 낫다는 말은 없습니다. 어느 것이 요구 사항에 더 잘 맞는지.