How to find all the subclasses of a class given its name?

后端 未结 10 1799
遥遥无期
遥遥无期 2020-11-22 10:14

I need a working approach of getting all classes that are inherited from a base class in Python.

10条回答
  •  执念已碎
    2020-11-22 11:08

    If you just want direct subclasses then .__subclasses__() works fine. If you want all subclasses, subclasses of subclasses, and so on, you'll need a function to do that for you.

    Here's a simple, readable function that recursively finds all subclasses of a given class:

    def get_all_subclasses(cls):
        all_subclasses = []
    
        for subclass in cls.__subclasses__():
            all_subclasses.append(subclass)
            all_subclasses.extend(get_all_subclasses(subclass))
    
        return all_subclasses
    

提交回复
热议问题