Python에서 클래스의 모든 하위 클래스 찾기
Python의 지정된 기본 클래스에서 상속된 모든 클래스를 검색하려면 __subclasses__()를 활용하세요. 방법. 이 메서드는 객체 클래스(Python 3의 기본값)를 확장하는 새로운 스타일 클래스에 사용할 수 있습니다. 작동 방식은 다음과 같습니다.
class Foo(object): pass class Bar(Foo): pass class Baz(Foo): pass class Bing(Bar): pass print([cls.__name__ for cls in Foo.__subclasses__()]) # ['Bar', 'Baz'] print(Foo.__subclasses__()) # [<class '__main__.Bar'>, <class '__main__.Baz'>]
하위 하위 클래스를 포함하려면 재귀를 사용할 수 있습니다.
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'>}
참고: 아직 정의되지 않은 하위 클래스(예: 가져오지 않은 모듈로 인해)는 __subclasses__()에 의해 감지되지 않습니다.
클래스 이름 문자열을 사용하여 하위 클래스 찾기:
클래스 이름만 문자열로 사용할 수 있는 경우 , 다음 단계가 필요합니다:
이름 문자열에서 클래스 찾기:
이름 문자열에서 클래스를 찾는 방법은 예상 위치에 따라 다릅니다.
동일한 모듈 내에서 예상되는 경우:
cls = globals()[name]
locals 네임스페이스 내에서 예상되는 경우:
cls = locals()[name]
모듈 내 임의의 경우:
import importlib modname, _, clsname = name.rpartition('.') mod = importlib.import_module(modname) cls = getattr(mod, clsname)
클래스를 찾으면 해당 __subclasses__() 메서드를 사용하여 원하는 하위 클래스 목록을 검색할 수 있습니다.
위 내용은 Python에서 클래스의 모든 하위 클래스를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!