클래스의 하위 클래스에 액세스
Python에서는 __subclasses__ 메서드를 통해 특정 클래스의 모든 하위 클래스를 찾을 수 있습니다. 이 메서드는 새 스타일 클래스(Python 3의 객체에서 상속되거나 새 스타일 클래스에서 서브클래싱된 클래스)에 사용할 수 있습니다.
예를 들어 다음 코드를 고려하세요.
class Foo(object): pass class Bar(Foo): pass class Baz(Foo): pass class Bing(Bar): pass
Foo의 하위 클래스를 검색하려면 다음 코드를 사용할 수 있습니다.
print([cls.__name__ for cls in Foo.__subclasses__()])
이렇게 하면 하위 클래스의 이름이 인쇄됩니다.
['Bar', 'Baz']
__subclasses__를 사용하여 하위 클래스 자체를 얻을 수도 있습니다. ():
print(Foo.__subclasses__())
다음과 같은 하위 클래스 목록이 인쇄됩니다.
[<class '__main__.Bar'>, <class '__main__.Baz'>]
이러한 하위 클래스가 실제로 기본 클래스로 Foo를 가지고 있는지 확인하려면 다음 코드를 사용할 수 있습니다.
for cls in Foo.__subclasses__(): print(cls.__base__)
이렇게 하면 다음이 인쇄됩니다.
<class '__main__.Foo'> <class '__main__.Foo'>
그러나 하위 클래스의 클래스 정의가 아직 실행되지 않은 경우 다음에서 찾을 수 없다는 점에 유의해야 합니다. __서브클래스__. 이를 설명하기 위해 재귀를 사용할 수 있습니다.
def all_subclasses(cls): return set(cls.__subclasses__()).union( [s for c in cls.__subclasses__() for s in all_subclasses(c)]) print(all_subclasses(Foo))
다음과 같이 인쇄됩니다.
{<class '__main__.Bar'>, <class '__main__.Baz'>, <class '__main__.Bing'>}
위 내용은 Python 클래스의 모든 하위 클래스를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!