Python에서 이름으로 클래스의 하위 클래스를 검색하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-18 09:10:02
원래의
629명이 탐색했습니다.

How to Retrieve Subclasses of a Class by Name in Python?

Python에서 이름으로 클래스의 하위 클래스 찾기

문제:
모든 클래스를 어떻게 검색할 수 있습니까? 해당 클래스를 사용하여 Python의 특정 기본 클래스에서 상속됩니다. 이름?

해결책:

Python은 이름으로 지정된 클래스의 하위 클래스를 찾는 우아한 접근 방식을 제공합니다. __subclasses__ 메소드를 통해 클래스의 하위 클래스를 직접 검색할 수 있습니다.

코드 설명:

Bar, Baz, 하위 클래스가 있는 Foo라는 기본 클래스가 있다고 가정합니다. Bing에서 다음 코드 조각은 다음의 사용법을 보여줍니다. __subclasses__:

class Foo(object):
    pass

class Bar(Foo):
    pass

class Baz(Foo):
    pass

class Bing(Bar):
    pass

# Get the subclasses of Foo
foo_subclasses = Foo.__subclasses__()
print("Subclass names:", [cls.__name__ for cls in foo_subclasses])
print("Subclasses themselves:", Foo.__subclasses__())

# Validate that the subclasses inherit from Foo
for cls in Foo.__subclasses__():
    print("Base class of {}: {}".format(cls, cls.__base__))
로그인 후 복사

출력:

Subclass names: ['Bar', 'Baz']
Subclasses themselves: [<class '__main__.Bar'>, <class '__main__.Baz'>]
Base class of <class '__main__.Bar'>: <class '__main__.Foo'>
Base class of <class '__main__.Baz'>: <class '__main__.Foo'>
로그인 후 복사

하위 하위 클래스 찾기:
하위 하위 클래스를 찾아야 하는 경우 재귀를 사용할 수 있습니다. function:

def all_subclasses(cls):
    return set(cls.__subclasses__()).union(
        [s for c in cls.__subclasses__() for s in all_subclasses(c)])
로그인 후 복사

참고:
__subclasses__가 효과적으로 작동하려면 하위 클래스의 클래스 정의가 이전에 실행되어야 한다는 점에 유의하는 것이 중요합니다. 클래스 이름을 나타내는 문자열이 있는 경우 먼저 globals(), locals() 또는 importlib와 같은 기술을 사용하여 클래스를 검색할 수 있습니다.

위 내용은 Python에서 이름으로 클래스의 하위 클래스를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿