You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:22:51