Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 type()과 isinstance() 함수로 객체 자료형 확인하기

이 튜토리얼에서는 파이썬의 대표적인 내장 함수인 type()isinstance()에 대해 알아봅니다. 두 함수 모두 객체의 자료형을 확인할 때 사용되며, 각각의 특징과 차이점을 이해하면 상황에 맞게 적절히 활용할 수 있습니다. 하나씩 살펴보겠습니다.

type(object) — 객체의 자료형 반환

type()은 객체의 자료형을 그대로 반환하는 함수입니다. 예를 들어 값이 5인 객체 val이 있다면, 이 객체의 자료형은 int(정수)입니다. 이를 type() 함수로 확인해 보겠습니다.

  • 객체를 초기화합니다.
  • type(object) 함수를 호출하여 객체의 자료형을 얻습니다.
  • 결과를 출력합니다.

예제

# 객체 초기화
val = 5
# 객체의 자료형 확인
object_type = type(val)
# 자료형 출력
print(object_type)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

<class 'int'>

isinstance(object, class) — 객체와 클래스의 일치 여부 확인

isinstance(object, class)는 두 개의 인자를 받습니다. 첫 번째는 확인하고 싶은 객체, 두 번째는 비교 대상이 되는 클래스입니다. 객체가 해당 클래스 또는 그 하위 클래스의 인스턴스라면 True를, 아니라면 False를 반환합니다.

예를 들어 값이 {1, 2, 3}인 객체 nums가 있을 때, 이 객체와 set 클래스를 isinstance()에 전달하면 True가 반환됩니다. 아래 단계를 따라 직접 확인해 보세요.

  • 객체를 초기화합니다.
  • 객체와 클래스를 인자로 isinstance(object, class)를 호출합니다.

예제

# 객체 초기화
nums = {1, 2, 3}
# isinstance(object, class) 함수 호출
print(isinstance(nums, set))

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

True

즉, isinstance()는 단순한 자료형 검사뿐만 아니라 상속 관계(서브클래스 여부)까지 함께 확인해 줍니다. True가 반환된다면 해당 객체가 주어진 클래스의 종류에 속한다는 의미입니다. 물론 사용자가 직접 정의한 커스텀 클래스에도 적용할 수 있습니다. 예제를 통해 살펴보겠습니다.

예제

# 클래스 정의
class SampleClass:
    # 생성자
    def __init__(self):
        self.sample = 5
# SampleClass의 인스턴스 생성
sample_class = SampleClass()
# 클래스 변수 접근
print(sample_class.sample)
# isinstance(object, class) 함수 호출
print(isinstance(sample_class, SampleClass))

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

5
True

마무리

두 함수 모두 객체의 자료형을 확인하는 데 유용하지만, 용도에 맞게 선택하는 것이 좋습니다. 정확한 자료형 자체가 필요하다면 type()을, 특정 클래스와의 호환 여부(상속 포함)를 판단하려면 isinstance()를 사용하는 것이 파이썬 공식 스타일 가이드에서도 권장되는 방식입니다. 튜토리얼을 따라 하는 중 어려운 부분이 있다면 댓글로 남겨 주세요.