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

Python getattr调用platform模块报'module' object is not callable错

报错原因

你预设列表里的所有属性都是platform模块下可调用的函数,实际上列表里混入了多种非函数类型的属性,统一加()调用就会触发类型错误:

  • 触发你看到的 'module' object is not callable 报错的直接原因,是列表里的collections、os、re、sys、platform这几个项,对应的都是platform模块引用的其他依赖模块,模块对象本身不能被调用。
  • 除此之外列表里还有其他非可调用属性,比如uname_result是定义返回值结构的类、部分版本相关的常量属性,无脑加括号同样会触发其他类型的调用错误。
修复方案

获取属性后先判断对象是否可调用,可调用对象再加括号执行,不可调用的对象直接取值即可,修复后的代码如下:

import platform

mm = ['architecture', 'collections', 'java_ver', 'libc_ver', 'mac_ver', 'machine', 'node', 'os', 'platform', 'processor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation',
      'python_revision', 'python_version', 'python_version_tuple', 're', 'release', 'sys', 'system', 'system_alias', 'uname', 'uname_result', 'version', 'win32_edition', 'win32_is_iot', 'win32_ver']


for i in mm:
    attr = getattr(platform, i)
    if callable(attr):
        c = attr()
    else:
        c = attr
    print(f"{i}: {c}")

运行后既可以得到architecture()、python_version()这类函数的执行结果,也能正常输出模块、常量类属性的实际值,不会再触发调用报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:09:35