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类里的导入语句,将类的引入路径补全到具体的代码文件:
修正后导入拿到的就是可实例化的Employee类,执行创建对象的逻辑不会再触发模块调用的报错。from com.gs.entities.employee import 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
相关产品推荐
相关产品推荐

