>  기사  >  백엔드 개발  >  Python 데이터 유형 판단 유형과 isinstance의 차이점

Python 데이터 유형 판단 유형과 isinstance의 차이점

高洛峰
高洛峰원래의
2016-10-19 14:39:051808검색

프로젝트에서는 각 인터페이스에서 클라이언트가 전달한 매개변수 유형을 확인합니다. 확인에 실패하면 "매개변수 오류" 오류 코드가 클라이언트에 반환됩니다.

이는 디버깅을 용이하게 할 뿐만 아니라 견고성도 향상시킵니다. 클라이언트는 부정 행위를 할 수 있으므로 클라이언트가 쉽게 전달한 매개 변수를 신뢰하지 마십시오.

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 &#39;instance&#39;>
old style class <type &#39;instance&#39;>
new style class <class &#39;__main__.C&#39;>
True
type보다 isinstance가 낫다는 말은 없습니다. 어느 것이 요구 사항에 더 잘 맞는지.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.