Python创建类实例时报'module' object is not callable错误怎么解决?
问题原因
你触发报错的核心原因是Python中模块和类的引用逻辑和Java存在差异:你通过import rectangle导入的rectangle是模块对象(对应你本地的rectangle.py文件),而非模块内部定义的rectangle类,直接将模块作为构造函数调用就会触发'module' object is not callable报错。
修复方案
有两种常用修复方式:
- 方式1:导入时直接引入模块内的类
将导入语句修改为:
from rectangle import rectangle
后续实例化逻辑a = rectangle(4,5)无需修改即可正常运行。
- 方式2:保留原导入规则,实例化时明确指定类的所属模块
将实例化代码修改为:
a = rectangle.rectangle(4,5)
即通过模块名.类名的格式定位到你实际要调用的类。
额外优化建议
- 按照Python通用编码规范,模块名建议用小写,类名建议用大驼峰命名,你可以将类名修改为
Rectangle,避免出现模块和类同名导致的混淆问题,也更符合行业通用写法。 - 你当前代码中
__str__方法返回的是元组而非字符串,后续执行打印时会触发类型错误,建议修改为字符串拼接格式,例如:
def __str__(self): return f"this is a {self.l} by {self.w} rectangle with an area of {self.getArea()}"
内容的提问来源于stack exchange,提问作者ir6
相关产品推荐
相关产品推荐

