객체의 유형을 확인하는 방법

anonymity
풀어 주다: 2019-05-25 15:10:48
원래의
4245명이 탐색했습니다.

Python에는 type()과 isinstance()라는 두 가지 유형 판단 함수가 있습니다.

객체의 유형을 확인하는 방법

type() 사용

먼저 type() 함수를 사용하여 객체 유형을 결정합니다.

기본 유형은 type()을 사용하여 결정할 수 있습니다.

>>> type(123)
<type &#39;int&#39;>
>>> type(&#39;str&#39;)
<type &#39;str&#39;>
>>> type(None)
<type &#39;NoneType&#39;>
로그인 후 복사

변수가 함수를 가리키는 경우 또는 클래스, 다음을 판단하기 위해 type()을 사용할 수도 있습니다.

>>> type(abs)
<type &#39;builtin_function_or_method&#39;>
>>> type(a)
<class &#39;__main__.Animal&#39;>
로그인 후 복사

그런데 type() 함수는 어떤 유형을 반환합니까? 유형 유형을 반환합니다.

isinstance()를 사용하세요

클래스 상속 관계에서는 type()을 사용하는 것이 매우 불편합니다. 클래스 유형을 확인하려면 isinstance() 함수를 사용할 수 있습니다.

마지막 예를 검토해 보겠습니다. 상속 관계가 다음과 같은 경우:

object -> Animal -> Dog -> Husky
로그인 후 복사

그러면 isinstance()는 객체가 특정 유형인지 여부를 알려줄 수 있습니다. 먼저 세 가지 유형의 개체를 만듭니다.

>>> a = Animal()
>>> d = Dog()
>>> h = Husky()
로그인 후 복사

그런 다음 판단합니다.

>>> isinstance(h, Husky)
True
로그인 후 복사

h 변수가 Husky 개체를 가리키므로 문제가 없습니다.

판결:

>>> isinstance(h, Dog)
True
로그인 후 복사

h 자체는 Husky 유형이지만 Husky는 Dog를 상속받았으므로 h도 Dog 유형입니다. 즉, isinstance()는 객체가 해당 유형 자체인지 또는 해당 유형의 상위 상속 체인에 있는지 확인합니다.

그러므로 우리는 h가 여전히 동물 유형임을 확신할 수 있습니다:

>>> isinstance(h, Animal)
True
로그인 후 복사

마찬가지로 실제 유형이 Dog인 d도 동물 유형입니다:

>>> isinstance(d, Dog) and isinstance(d, Animal)
True
로그인 후 복사

그러나 d는 허스키 유형이 아닙니다:

>>> isinstance(d, Husky)
False
로그인 후 복사

기본 type()으로 판단할 수 있습니다. isinstance()를 사용하여 유형을 결정할 수도 있습니다.

>>> isinstance(&#39;a&#39;, str)
True
>>> isinstance(u&#39;a&#39;, unicode)
True
>>> isinstance(&#39;a&#39;, unicode)
False
로그인 후 복사

또한 변수가 특정 유형 중 하나인지 확인할 수도 있습니다. 예를 들어 다음 코드는 해당 변수가 str인지 유니코드인지 확인할 수 있습니다.

>>> isinstance(&#39;a&#39;, (str, unicode))
True
>>> isinstance(u&#39;a&#39;, (str, unicode))
True
로그인 후 복사

str과 unicode는 모두 basestring에서 상속되므로 위 코드를 다음과 같이 단순화할 수도 있습니다.

>>> isinstance(u&#39;a&#39;, basestring)
True
로그인 후 복사

유형을 결정하는 type()이 있는데 왜 isinstance()가 있나요? 한 가지 분명한 차이점은 하위 클래스를 판단하는 것입니다. type()은 하위 클래스를 상위 유형으로 간주하지 않습니다. isinstance()는 하위 클래스를 상위 클래스 유형으로 간주합니다.

위 내용은 객체의 유형을 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿