Python에서 클래스의 하위 클래스 찾기
Python에서는 __subclasses__( ) 방법. 이 방법은 "object" 클래스에서 상속되고 Python 3에서 일반적으로 사용되는 새로운 스타일 클래스에 사용할 수 있습니다.
하위 클래스의 이름을 얻으려면:
class Foo(object): pass class Bar(Foo): pass class Baz(Foo): pass class Bing(Bar): pass [cls.__name__ for cls in Foo.__subclasses__()] # ['Bar', 'Baz']
또는 하위 클래스 자체를 검색하려면:
Foo.__subclasses__() # [<class '__main__.Bar'>, <class '__main__.Baz'>]
기본 클래스 연결을 확인하려면:
for cls in Foo.__subclasses__(): print(cls.__base__) # <class '__main__.Foo'> # <class '__main__.Foo'>
재귀적 하위 클래스 검색:
If 하위 하위 클래스(손자 등)를 캡처해야 하는 경우 재귀적 접근 방식이 필요합니다.
def all_subclasses(cls): return set(cls.__subclasses__()).union( [s for c in cls.__subclasses__() for s in all_subclasses(c)]) all_subclasses(Foo) # {<class '__main__.Bar'>, <class '__main__.Baz'>, <class '__main__.Bing'>}
참고: 하위 클래스의 클래스 정의가 실행되지 않은 경우(예: 해당 모듈은 가져오지 않음) __subclasses__()로 감지할 수 없습니다.
클래스 이름에서 하위 클래스 얻기:
대신 클래스 이름을 문자열로 사용하세요. 이 경우 다음 단계를 따르세요.
클래스 이름을 사용하여 클래스 개체를 찾습니다.
동일한 모듈에 있는 경우:
cls = globals()[name]
모든 모듈에 있는 경우:
import importlib modname, _, clsname = name.rpartition('.') mod = importlib.import_module(modname) cls = getattr(mod, clsname)
위 내용은 Python에서 특정 클래스의 하위 클래스를 어떻게 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!