如何获取Python文件中定义的所有类列表?
获取Python模块中定义的所有类的方法
当然有办法实现这个需求!下面给你两种实用的方案,都能轻松拿到目标模块里的自定义类:
方案1:使用inspect模块(推荐)
inspect是Python标准库中专门用于检查对象的工具,用它来筛选类既准确又简洁,还能自动排除掉模块中导入的外部类:
在main.py中编写如下代码:
import inspect import my_classes def get_module_classes(module): # 筛选出模块中定义的类:先过滤所有类对象,再排除非当前模块定义的类 return [ member for name, member in inspect.getmembers(module, inspect.isclass) if member.__module__ == module.__name__ ] # 调用方法获取类列表 classes = get_module_classes(my_classes) print(classes) # 输出: [<class 'my_classes.A'>, <class 'my_classes.B'>, <class 'my_classes.C'>]
方案2:遍历模块的__dict__属性
如果你不想引入额外模块,也可以直接遍历模块的__dict__属性(模块的所有成员都存在这里),手动判断是否为当前模块定义的类:
import my_classes def get_module_classes(module): classes_list = [] for name, obj in module.__dict__.items(): # type是所有类的元类,isinstance(obj, type)可判断是否为类;再校验所属模块 if isinstance(obj, type) and obj.__module__ == module.__name__: classes_list.append(obj) return classes_list classes = get_module_classes(my_classes) print(classes) # 同样得到目标类列表
小提示
如果你的模块没有导入其他外部类,那可以省略member.__module__ == module.__name__这个判断,但加上它能让代码更健壮,避免把模块中导入的第三方类也混入结果里。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

