python 데이터 형식 판단 type 과 isinstance 의 차이 사례 분석

프로젝트 에서 저 희 는 모든 인터페이스 에서 클 라 이언 트 가 보 내 온 매개 변수 유형 을 검증 하고 인증 이 통과 되 지 않 으 면 클 라 이언 트 에 게'매개 변수 오류'오류 코드 를 되 돌려 줍 니 다.
이렇게 하면 디 버 깅 에 편리 할 뿐만 아니 라 건장 성 도 증가 시 킬 수 있다.클 라 이언 트 는 컨 닝 을 할 수 있 기 때문에 클 라 이언 트 가 보 내 온 인 자 를 쉽게 믿 지 마 세 요.
인증 형식 은 type 함수 로 아주 좋 습 니 다.예 를 들 어
>>type('foo') == str
True
>>type(2.3) in (int,float)
True
type()이 생 겨 서 유형 을 판단 하 는데 왜 isinstance()가 있 습 니까?
하나의 뚜렷 한 차 이 는 자 류 를 판단 하 는 것 이다.
type()은 하위 클래스 가 부모 클래스 라 고 생각 하지 않 습 니 다.
isinstance()는 자 류 를 부류 의 유형 이 라 고 생각 할 것 이다.
천 마디 말 이 한 마디 말 만 못 하 다.

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'> True존재 하지 않 습 니 다.뭐 가 더 필요 해?
총결산
이상 은 python 데이터 형식 판단 type 과 isinstance 의 차이 사례 분석 에 관 한 모든 내용 입 니 다.도움 이 되 기 를 바 랍 니 다.관심 이 있 는 친 구 는 본 사 이 트 를 계속 참조 할 수 있 습 니 다.Python 프로 그래 밍 의 칠판 에 조합 을 배열 하 는데,너 는 아 깝 게 풀 수 있 니?,Python 은dict__dir()와 의 사고등 어떤 문제 가 있 으 면 메 시 지 를 남 길 수 있 습 니까?모두 함께 교류 하고 토론 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기