递归获取base class 的子子孙孙~
def get_subclasses_with_abstract(base_class_name, base_class, module_name, subclasses_map):
"""
获取基类的所有子类, 并写入map中
:param base_class_name: 基类名称
:param base_class: 基类
:param module_name: 类所在模块名称
:param subclasses_map: result map {类名: 类实例}
"""
sub_classes = base_class.__subclasses__()
subclasses_map[base_class_name] = base_class()
for sub_class in sub_classes:
class_name = sub_class.__name__
module = __import__(module_name)
class_obj = getattr(module, class_name)
get_subclasses_without_abstract(class_name, class_obj, module_name, subclasses_map)