본문 바로가기

Python

isinstance()

728x90
반응형

isinstance 라는 단어 자체에서 알 수 있듯이

 

instance인지 확인해주는 기능을 합니다.

 

가장 유용하게 사용할 수 있는 기능은 class를 통해서 instance를 생성해 준 경우,

만들어준 instance가 특정 class의 instance인지를 확인해줍니다.

 

그 외에도, data의 type을 활용하는데에도 쓸 수 있습니다.

단순 type을 확인하는 것은 type(data) == datatype example과 같은 형태로 비교하는 방법이 있기 때문에 그리 유용하진 않겠지만, 여러가지 type중의 하나인지 tuple과 함께 이용해서 사용할 수 있어서 유용하게 쓸 수 있습니다.

 

구체적인 예를 들어서 살펴봅시다.

 

1. class의 instance인지 확인

class Person:
    pass

class Dog:
    pass

me = Person()

print("나는 사람인가?:", isinstance(me, Person))
print("나는 개인가?:", isinstance(me, Dog))

결과

나는 사람인가?: True
나는 개인가?: False

me는 class Person으로 만들어진 instance이기 때문에 위와 같은 다행스러운 결과가 나옵니다.

 

 

2. data type 확인

sample = [1,2,3]

print(isinstance(sample, list))
print(isinstance(sample, str))
print("----")
print(isinstance(sample, (str, int)))
print(isinstance(sample, (str, int, list)))

----을 기준으로  위는 data_type을 한가지만 확인

아래는 data_type들을 tuple 형태로 넣어주고 그 중 하나에 해당하는지 확인

 

결과

True
False
----
False
True

 

 

** 추가 **

상속을 받은 경우 비교

class Parent:
    pass

class Child(Parent):
    pass

parent = Parent()
child = Child()

print(isinstance(parent, Child))
print(isinstance(child, Parent))

결과

False
True

요약:

  부모 class의 instance는 자식 class의 instance이냐? False

  자식 class의 instance는 부모 class의 instance이냐? True

 

728x90
반응형