Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 클래스가 특정 슈퍼클래스의 하위 클래스인지 확인하는 방법

파이썬에서는 issubclass() 함수나 __bases__ 속성을 활용하여 어떤 클래스가 주어진 슈퍼클래스(부모 클래스)의 하위 클래스인지 간단히 확인할 수 있습니다.

예제 클래스 정의

먼저 다음과 같이 두 개의 클래스 A와 B를 정의합니다. 여기서 B는 A를 상속받은 하위 클래스입니다.

class A(object):
    pass

class B(A):
    pass

방법 1: issubclass() 함수 사용

issubclass() 내장 함수는 첫 번째 인자로 전달한 클래스가 두 번째 인자로 전달한 클래스의 하위 클래스인지 여부를 불리언 값(True 또는 False)으로 반환합니다.

class A(object):
    pass

class B(A):
    pass

print(issubclass(B, A))  # B가 A의 하위 클래스인지 확인

실행 결과:

True

방법 2: __bases__ 속성 사용

모든 파이썬 클래스는 자신이 직접 상속받은 부모 클래스(슈퍼클래스)들을 튜플 형태로 담고 있는 __bases__ 속성을 가집니다. 이 속성을 출력하면 해당 클래스의 기반 클래스를 바로 확인할 수 있습니다.

print(B.__bases__)  # B의 기반 클래스(슈퍼클래스) 확인

실행 결과:

(<class '__main__.A'>,)

정리

issubclass(B, A)는 B가 A의 하위 클래스일 경우 True를 반환하고, B.__bases__는 B가 직접 상속받은 슈퍼클래스들의 튜플을 반환합니다. 두 방법 모두 클래스 간의 상속 관계를 검증할 때 유용하게 활용되며, 특히 동적으로 클래스 구조를 분석해야 하는 상황에서 유용합니다.