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

파이썬에서 A가 B의 슈퍼 클래스인지 확인하는 방법

개요

파이썬에서 어떤 클래스가 다른 클래스의 슈퍼 클래스(상위 클래스)인지 확인해야 하는 경우가 종종 있습니다. 예를 들어 다음과 같이 두 클래스 A와 B가 정의되어 있다고 가정해 보겠습니다.

class A(object):
    pass

class B(A):
    pass

여기서 B는 A를 상속받은 서브 클래스이며, 따라서 A는 B의 슈퍼 클래스입니다. 이 사실을 확인하는 방법은 크게 두 가지가 있습니다.

방법 1: issubclass() 함수 사용

내장 함수 issubclass()를 사용하면 첫 번째 인자가 두 번째 인자의 서브 클래스인지 여부를 불리언 값으로 확인할 수 있습니다. 결과가 True라면 A가 B의 슈퍼 클래스임을 의미합니다.

방법 2: __bases__ 속성 사용

클래스 객체의 __bases__ 속성을 조회하면 해당 클래스가 직접 상속받은 기반 클래스(슈퍼 클래스)들을 튜플 형태로 얻을 수 있습니다.

예제 코드

class A(object):
    pass

class B(A):
    pass

print(issubclass(B, A))   # issubclass()로 B가 A의 서브 클래스인지 확인
print(B.__bases__)        # B의 기반 클래스(슈퍼 클래스) 확인

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

True
(<class '__main__.A'>,)

정리

issubclass(B, A)가 True를 반환하면 B가 A의 서브 클래스, 즉 A가 B의 슈퍼 클래스임을 알 수 있습니다. 또한 B.__bases__를 출력하면 B가 직접 상속한 클래스들이 튜플로 표시되므로 그 안에 A가 포함되어 있는지 확인할 수 있습니다. 참고로 __bases__는 직계 부모 클래스만 보여주는 반면, issubclass()는 간접적으로 상속된 조상 클래스까지도 판별해 주므로 상속 관계를 검증할 때 더 유용합니다.