You need to enable JavaScript to run this app. Python调用Employee构造报'module' object is not callable错误
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Employee构造报'module' object is not callable错误

报错根本原因

抛出TypeError: 'module' object is not callable的核心原因是导入逻辑不匹配,实际拿到的Employee对象不是自定义的类:

  • 你当前的导入语句from com.gs.entities import Employee,在Python的导入检索逻辑里,会优先在com.gs.entities包路径下寻找名为Employee的文件/模块。
  • 你实际把Employee类写在了其他命名的文件里,导致导入时拿到的是对应路径下的Employee模块文件本身,而非文件内部定义的Employee类。
  • 模块是不可调用的对象,不能像类一样加括号传参创建实例,因此触发类型错误;当你把append的参数改成整数时,没有触发对导入的Employee的调用逻辑,因此不会报错。
修正步骤
  • 第一步:梳理项目文件目录结构,保证导入路径和实际文件位置一一对应。标准结构如下:
    项目根目录/
    ├─ com/
    │  ├─ gs/
    │  │  ├─ entities/
    │  │  │  ├─ __init__.py
    │  │  │  └─ employee.py  # 存放自定义Employee类的文件
    │  │  └─ __init__.py
    │  └─ __init__.py
    └─ branch.py  # 存放Branch类的代码
    
    注意每个包目录下必须有__init__.py文件,Python才会将其识别为可导入的包。
  • 第二步:修正Branch类里的导入语句,将类的引入路径补全到具体的代码文件:
    from com.gs.entities.employee import Employee
    
    修正后导入拿到的就是可实例化的Employee类,执行创建对象的逻辑不会再触发模块调用的报错。
  • 第三步:修正代码里的其他潜在类型错误
    原startOperation、endOperation方法里直接将datetime对象和字符串用+拼接的逻辑会触发类型错误,可调整为f-string格式输出,同时修正原endOperation方法里打印文本写错的问题,示例:
    def startOperation(self):
        print(f"Starting operation at {self.startTime}")
    
    def endOperation(self):
        print(f"Ending operation at {self.endTime}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 23:36:08