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

numpy中Tester类未在__dict__中却被dir()和getmembers()检测到的问题

numpy模块Tester类相关问题解答

1. numpy隐藏Tester类的机制

numpy采用**延迟加载+模块级__getattr__**的机制实现这种效果:

  • Tester类并未提前导入并存入numpy.__dict__;
  • 当你首次访问numpy.Tester时,Python会触发模块的__getattr__方法,numpy在这个方法内部动态导入Tester类并返回;
  • 这种设计既减少了numpy启动时的资源开销,又能让用户按需访问该类,同时因为它不在模块的__dict__里,就会出现你观察到的“存在但不在__dict__”的现象。

2. dir()和inspect.getmembers()获取Tester引用的来源

这两个工具的枚举逻辑依赖模块的__dir__方法:

  • numpy自定义了模块级的__dir__方法,主动将Tester这类延迟加载的对象名称加入返回的名称列表,所以dir(numpy)能列出Tester;
  • inspect.getmembers()枚举模块成员时,会先通过dir()获取成员名称列表,再逐一解析这些名称对应的对象,因此也能获取到Tester类的引用。

内容的提问来源于stack exchange,提问作者user3435121

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:45:27