파이썬 type()과 isinstance() 이해하기: 실전 예제
파이썬 type()과 isinstance() 이해하기: 실전 예제
파이썬 type()이란?
파이썬에는 입력으로 주어진 변수의 클래스 타입을 찾아주는 내장 함수 type()이 있습니다. 예를 들어 입력이 문자열이면 <class 'str'>, 리스트면 <class 'list'> 등으로 출력됩니다.
type() 명령으로 단일 인자를 전달하면, 반환값은 인자의 클래스 타입입니다(예: type(object)).
세 개의 인자를 전달하는 것도 가능합니다: type(name, bases, dict). 이 경우 새로운 타입 객체를 반환합니다.
이 튜토리얼에서 배울 내용:
- 파이썬 type()이란?
- type() 문법
- type() 예제
- 예제: 클래스 객체에 type() 사용
- 예제: type()에 name, bases, dict 사용
- 파이썬 isinstance()란?
- isinstance() 문법
- isinstance() 예제들
- 파이썬에서 type()과 isinstance() 차이점
type() 문법
type()은 아래 두 가지 방식으로 사용:
type(object)
type(name, bases, dict)
매개변수: type(object)
- object: 필수 매개변수. 이 매개변수만 전달되면 해당 객체의 타입 반환.
매개변수: type(name, bases, dict)
- name: 클래스 이름.
- bases: (선택) 기반 클래스.
- dict: (선택) 클래스 정의를 가진 네임스페이스.
반환값
object만 매개변수로 전달되면 객체의 타입 반환. type(name, bases, dict) 형태면 새로운 타입 객체 반환.
type() 예제
문자열, 숫자, 실수, 복소수, 리스트, 튜플, 딕셔너리, 집합 변수를 type으로 확인:
str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}
print("타입:", type(str_list))
print("타입:", type(age))
print("타입:", type(pi))
print("타입:", type(c_num))
print("타입:", type(my_list))
print("타입:", type(my_tuple))
print("타입:", type(my_dict))
print("타입:", type(my_set))
출력:
타입: <class 'str'>
타입: <class 'int'>
타입: <class 'float'>
타입: <class 'complex'>
타입: <class 'list'>
타입: <class 'tuple'>
타입: <class 'dict'>
타입: <class 'set'>
예제: 클래스 객체에 type() 사용
클래스에서 생성된 객체를 type()으로 확인하면 클래스 타입과 이름이 함께 반환:
class test:
s = 'testing'
t = test()
print(type(t))
출력: <class '__main__.test'>
예제: type()에 name, bases, dict 사용
type(name, bases, dict) 문법으로도 호출 가능. 세 매개변수는 클래스 정의를 구성하는 요소: name=클래스명, bases=기반 클래스, dict=기반 클래스 속성 딕셔너리.
class MyClass:
x = 'Hello World'
y = 50
t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))
출력:
<class 'type'> / {'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}
세 인자를 모두 전달하면 기반 클래스 속성으로 새 클래스 초기화 가능.
파이썬 isinstance()란?
파이썬 isinstance는 내장 함수 중 하나입니다. 두 인자를 받아 첫 번째 인자가 두 번째 인자로 주어진 classinfo의 인스턴스면 True, 아니면 False 반환.
isinstance() 문법
isinstance(object, classtype)
매개변수
- object: classtype과 비교할 객체. 타입 일치 시 True, 불일치 시 False.
- class type: 타입, 클래스, 또는 타입/클래스의 튜플.
반환값
객체가 classtype의 인스턴스면 True, 아니면 False.
isinstance() 예제들
예제: isinstance() 정수 확인
age = isinstance(51, int)
print("age는 정수:", age)
출력: age는 정수: True
예제: isinstance() 실수 확인
pi = isinstance(3.14, float)
print("pi는 실수:", pi)
출력: pi는 실수: True
예제: isinstance() 문자열 확인
message = isinstance("Hello World", str)
print("message는 문자열:", message)
출력: message는 문자열: True
예제: isinstance() 튜플 확인
my_tuple = isinstance((1,2,3,4,5), tuple)
print("my_tuple은 튜플:", my_tuple)
출력: my_tuple은 튜플: True
예제: isinstance() 집합 확인
my_set = isinstance({1,2,3,4,5}, set)
print("my_set은 집합:", my_set)
출력: my_set은 집합: True
예제: isinstance() 리스트 확인
my_list = isinstance([1,2,3,4,5], list)
print("my_list는 리스트:", my_list)
출력: my_list는 리스트: True
예제: isinstance() 딕셔너리 확인
my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"}, dict)
print("my_dict는 딕셔너리:", my_dict)
출력: my_dict는 딕셔너리: True
예제: isinstance() 클래스 테스트
class MyClass:
_message = "Hello World"
_class = MyClass()
print("_class는 MyClass 인스턴스:", isinstance(_class, MyClass))
출력: _class는 MyClass 인스턴스: True
파이썬에서 type()과 isinstance() 차이점
| type() | isinstance() |
| 입력 변수의 클래스 타입을 찾아주는 내장 함수. |
값을 주어진 타입과 비교. 일치하면 True, 아니면 False. |
| 반환값: 타입 객체 |
반환값: 불리언(True/False) |
class A:
my_listA = [1,2,3]
class B(A):
my_listB = [1,2,3]
print(type(A()) == A)
print(type(B()) == A)
출력: True / False
type()으로 서브클래스 검사 시 False. |
class A:
my_listA = [1,2,3]
class B(A):
my_listB = [1,2,3]
print(isinstance(A(), A))
print(isinstance(B(), A))
출력: True / True
isinstance()는 서브클래스 검사 시 True. |
요약
- 파이썬 내장
type()로 변수의 클래스 타입 확인 가능(문자열→<class 'str'>, 리스트→<class 'list'> 등).
type()에 단일 인자 전달 시 인자의 클래스 타입 반환(type(object)).
- 세 인자(
name, bases, dict) 전달 시 새 타입 객체 반환.
- 파이썬 내장
isinstance()로 값과 타입 비교. 일치하면 True, 아니면 False.
isinstance()로 문자열, 실수, 정수, 리스트, 튜플, 딕셔너리, 집합, 클래스 등 테스트 가능.