Python

[Python] type()과 isinstance()의 차이

ssun-g 2023. 8. 23. 17:34
type() vs isinstance()

 

type()

  • 객체의 클래스 타입을 확인하는 함수
  • 객체의 클래스를 반환
  • 정확한 클래스 타입을 비교 → 상속 관계에 있는 경우에도 정확한 타입이 일치해야 'True'를 반환

 

isinstance()

  • 객체가 특정 클래스의 인스턴스인지 여부를 확인하는 함수
  • 객체가 해당 클래스의 인스턴스이면 'True', 그렇지 않으면 'False'를 반환
  • 상속 관계만을 고려하여 'True'를 반환할 수 있음

 

예시

class A:
    pass

class B(A):
    pass

obj_b = B()

print(type(obj_b) is A)          # False
print(type(obj_b) is B)          # True
print(isinstance(obj_b, A))      # True
print(isinstance(obj_b, B))      # True
  • 마지막 예시 설명 (print 4줄)
    • obj_b는 A와 type이 다르다. (False)
    • obj_b는 B와 type이 같다. (True)
    • obj_b는 A의 instance이다. (True)
    • obj_b는 B의 instance이다. (True)