파이썬에서는 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가 직접 상속받은 슈퍼클래스들의 튜플을 반환합니다. 두 방법 모두 클래스 간의 상속 관계를 검증할 때 유용하게 활용되며, 특히 동적으로 클래스 구조를 분석해야 하는 상황에서 유용합니다.