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 중국어 웹사이트의 기타 관련 기사를 참조하세요!