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)