파이썬 type() 사용법 2가지

파이썬 type() 함수는 객체의 자료형을 확인할 수 있는 매우 유용한 함수입니다. 개발자는 이를 통해 변수나 객체가 어떤 자료형인지 쉽게 파악할 수 있으며, 이를 활용해 다양한 조건 처리 및 디버깅 작업을 수행할 수 있습니다. 이 글에서는 type() 함수의 기본적인 사용법부터 다양한 활용 방법까지 살펴보겠습니다.

파이썬 type() 함수의 기본 개념

type() 함수는 파이썬의 내장 함수 중 하나로, 인수로 전달된 객체의 자료형을 반환합니다.

Python
num = 23
print(type(num))

위 코드에서 변수명에 할당된 값은 23이며, 이는 정수형(integer)입니다. 따라서 type(변수명)은 다음과 같이 “<class ‘int’>”를 출력하게 됩니다.

그림 1. 파이썬 type()을 정수형 변수를 대상으로 실행한 결과
그림 1. 파이썬 type()을 정수형 변수를 대상으로 실행한 결과

type()은 다음과 같이 Built-in Type을 알 수 있게 해 줍니다.

  • int: 정수형 데이터
  • float: 실수형 데이터
  • str: 문자열 데이터
  • list: 리스트 데이터
  • tuple: 튜플 데이터
  • dict: 딕셔너리 데이터

뿐만 아니라 type() 함수는 객체의 자료형을 명확하게 알려주는 도구로, 파이썬을 배우는 초보자나 코드를 디버깅할 때 매우 유용합니다.

변수 자료형 확인하기

파이썬은 변수 선언 시 자료형을 명시하지 않아도 됩니다. 그러나 때때로 변수의 자료형을 확인해야 할 때가 있습니다. 특히 여러 가지 자료형을 동시에 사용할 때 type() 함수를 통해 자료형을 확인하는 것이 좋습니다.

Python
a = 4096
b = 40.96
c = "4096MB"
d = [1024, 2048, 4096]

print(type(a))
print(type(b))
print(type(c))
print(type(d))

위 예시에서 각각의 변수는 서로 다른 자료형을 가지고 있습니다. 아래 그림과 같이 type()을 사용하여 각 변수의 자료형을 확인할 수 있습니다.

그림 2. 파이썬 type()으로 int, float, str, list 자료형 확인
그림 2. 파이썬 type()으로 int, float, str, list 자료형 확인

type()과 조건문 활용하기

type() 함수는 조건문과 함께 사용할 때 특히 강력합니다. 자료형에 따라 다른 동작을 수행해야 할 경우, type()을 활용하여 효율적으로 코드를 작성할 수 있습니다.

Python
data = [4096, "4096MB", 40.96]

for item in data:
    if type(item) == int:
        print(f"{item} is integer.")
    elif type(item) == float:
        print(f"{item} is float.")
    elif type(item) == str:
        print(f"{item} is string.")

이 코드는 리스트에 있는 데이터를 하나씩 확인한 후, 해당 데이터의 자료형에 맞춰 메시지를 출력합니다. type()을 통해 각 데이터가 어떤 자료형인지 판단하여 조건을 분기 처리한 결과는 다음과 같습니다.

그림 3. 파이썬 type()으로 확인한 자료형 비교 구문으로 분기처리
그림 3. 파이썬 type()으로 확인한 자료형 비교 구문으로 분기처리

동적 클래스 생성

type() 함수는 단순히 객체의 자료형을 반환하는 것 외에도 매우 특별한 기능이 있습니다. 바로 동적으로 클래스를 생성할 수 있다는 점입니다. 이 기능은 주로 런타임에 새로운 클래스를 만들고자 할 때 유용합니다.

Python
MyClass = type('MyClass', (object,), {'size': 4096})

obj = MyClass()
print(obj.size)
type(obj)

위 코드는 type()을 사용하여 MyClass라는 이름의 클래스를 동적으로 생성한 것입니다. 클래스의 이름, 상속받을 부모 클래스, 클래스 속성 등을 인수로 전달하여 클래스를 즉시 만들 수 있습니다. 그리고 라인 5에서는 Built-in Type이 아닌 클래스 MyClass에 대해서도 확인이 가능합니다.

그림 4. 파이썬 type()으로 동적 클래스 생성 및 클래스 확인
그림 4. 파이썬 type()으로 동적 클래스 생성 및 클래스 확인

주의사항

type() 함수는 매우 유용하지만, 자료형을 직접 비교할 때는 isinstance() 함수와 함께 사용하는 것이 더 적절할 때도 있습니다. type()은 정확한 자료형만을 확인하지만, isinstance()는 상속 관계도 고려하여 자료형을 판단하기 때문입니다.

Python
a = 4096
print(type(a) == int)
print(isinstance(a, int))

class Animal:
    pass

class Dog(Animal):
    pass

d = Dog()
print(type(d) == Animal)
print(isinstance(d, Animal))

아래 그림에서 볼 수 있듯이, isinstance()는 객체가 부모 클래스의 인스턴스인지도 확인할 수 있습니다. 상속 관계를 고려한 자료형 확인이 필요하다면 type()보다는 isinstance()를 사용하는 것이 좋습니다.

그림 5. 파이썬 type() 대신 isinstance()를 사용해야 하는 경우(부모 클래스의 인스턴스 확인)
그림 5. 파이썬 type() 대신 isinstance()를 사용해야 하는 경우(부모 클래스의 인스턴스 확인)

정리

type() 함수는 파이썬에서 매우 강력한 도구로, 객체의 자료형을 확인하거나 동적으로 클래스를 생성하는 등 다양한 방식으로 활용할 수 있습니다. 특히 여러 자료형을 다룰 때, 자료형에 맞춘 조건 처리가 필요할 때 매우 유용합니다. 특히, 상속 관계를 고려해야 하는 경우에는 type()보다는 isinstance()를 사용하는 것이 더 적절합니다. 하지만, 해당 클래스임을 명확하게 확인해야 하는 경우에는 type()을 사용해서 명확하게 확인하는 편이 확실합니다.

참고자료

관련 포스트

Leave a Comment