Python: как найти все подклассы класса по имени

Чтобы найти все подклассы класса в Python по его имени, вы можете использовать модуль inspectили встроенный метод __subclasses__(). Вот несколько различных методов с примерами кода:

Метод 1: использование модуля inspect

import inspect
def get_subclasses(class_name):
    subclasses = []
    for subclass in vars()[class_name].__subclasses__():
        subclasses.append(subclass)
        subclasses.extend(get_subclasses(subclass.__name__))
    return subclasses
# Usage
subclasses = get_subclasses('ClassName')
print(subclasses)

Метод 2: использование метода __subclasses__()

def get_subclasses(class_name):
    class_obj = globals()[class_name]
    subclasses = class_obj.__subclasses__()
    return subclasses
# Usage
subclasses = get_subclasses('ClassName')
print(subclasses)

Метод 3: использование функции inspect.getmembers()

import inspect
def get_subclasses(class_name):
    subclasses = []
    for name, obj in inspect.getmembers(sys.modules[__name__]):
        if inspect.isclass(obj) and issubclass(obj, globals()[class_name]):
            subclasses.append(obj)
    return subclasses
# Usage
subclasses = get_subclasses('ClassName')
print(subclasses)

Эти методы рекурсивно найдут все подклассы данного имени класса и вернут список подклассов. Вы можете заменить 'ClassName'фактическим именем класса, для которого вы хотите найти подклассы.