카테고리 없음

TIL. 최종프로젝트(16) 인스턴스-클래스 isinstance

barryjung 2023. 6. 23. 23:55

[오늘 배운점]

팀원분이 작성해주신 코드를 보고 배운점이다.

파이썬

<인스턴스-클래스 검사 연산>

한개의 인스턴스가 있을때, 그 인스턴스가 특정 클래스로부터 만들어진게 맞는지.

즉, 인스턴스와 그 인스턴스를 만들어낸 클래스를 매칭해보는 연산이 있다.

 

isinstance(인스턴스, 클래스) 연산이다.

무려 파이썬 내장 연산인데, 이제껏 본적 없다가 팀원분 코드를 보며 처음 보게됬다.

 

역할은 위의 설명대로이다.

첫번째 인자 인스턴스가

두번째 인자 클래스로부터 만들어진 인스턴스면 참을 반환하고,

아니라면 거짓을 반환한다.

 

간편한 응용으로는,

어떤 값의 타입을 검사하는 용도로 사용될수 있다.

isinstance(리스트, list), isinstance(딕셔너리, dict), isinstance(숫자, int) 이런식이다.

 

마지막 예시는, isdigit이 생각나지만 확실히 동작이 다르니,

적합한 활용도 달라질것이다.

 

또한 클래스 내외에서 인스턴스가 자신의 인스턴스인지 검사하는데 사용될수도 있다.

이런 경우는 보통 예외처리에 사용되고, 모듈 파일에서 이런 활용이 보인다.

 

 

한편, 두 객체를 비교하는 연산인 is와 is not이 생각난다.

이 둘과 어떻게 차이나는지 한번 확인해봤다.

확인해본결과, isinstance는 인스턴스와 해당 클래스, 그리고 그 상위의 클래스들도 모두 참으로 반환한다.

반면 is는 정확히 인스턴스에 해당하는 클래스를 비교할때만 참을 반환한다.

 

그래서 두 방법은 비슷하고, 비슷한 결과가 기대되지만, 상속에 대해서 차이가 난다.

 

 

결론적으로, 인스턴스-클래스 관계를 검사하는 연산을 익히게 되었다.

필요한 상황에 따라 적절한 메소드를 사용할수 있어야 겠다.