Python에는 type()과 isinstance()라는 두 가지 유형 판단 함수가 있습니다.
type() 사용
먼저 type() 함수를 사용하여 객체 유형을 결정합니다.
기본 유형은 type()을 사용하여 결정할 수 있습니다.
>>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'>
변수가 함수를 가리키는 경우 또는 클래스, 다음을 판단하기 위해 type()을 사용할 수도 있습니다.
>>> type(abs) <type 'builtin_function_or_method'> >>> type(a) <class '__main__.Animal'>
그런데 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('a', str) True >>> isinstance(u'a', unicode) True >>> isinstance('a', unicode) False
또한 변수가 특정 유형 중 하나인지 확인할 수도 있습니다. 예를 들어 다음 코드는 해당 변수가 str인지 유니코드인지 확인할 수 있습니다.
>>> isinstance('a', (str, unicode)) True >>> isinstance(u'a', (str, unicode)) True
str과 unicode는 모두 basestring에서 상속되므로 위 코드를 다음과 같이 단순화할 수도 있습니다.
>>> isinstance(u'a', basestring) True
유형을 결정하는 type()이 있는데 왜 isinstance()가 있나요? 한 가지 분명한 차이점은 하위 클래스를 판단하는 것입니다. type()은 하위 클래스를 상위 유형으로 간주하지 않습니다. isinstance()는 하위 클래스를 상위 클래스 유형으로 간주합니다.
위 내용은 객체의 유형을 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!