Python Pet类实例化报错求助:'module' object is not callable问题
排查TypeError: 'module' object is not callable错误
错误根源
你遇到的这个错误,核心问题是模块与类的命名混淆:
- 若你将包含
Pet类的文件命名为pet.py,使用import pet导入后,pet指向的是整个模块文件,而非模块内的Pet类。直接调用pet()相当于试图把模块当作函数执行,必然触发报错。
解决办法
以下三种方式任选其一即可:
1. 直接导入类(推荐)
修改导入语句,明确导入模块内的Pet类:
from pet import Pet # 实例化时直接使用类名 userpet = Pet(name, animal_type, age)
2. 通过模块名访问类
若保留import pet的导入方式,实例化时需通过模块名调用类:
import pet # 格式:模块名.类名() userpet = pet.Pet(name, animal_type, age)
3. 避免模块与类重名
将存放Pet类的文件改名(比如改成pet_class.py),从根源避免命名冲突:
import pet_class userpet = pet_class.Pet(name, animal_type, age)
完整正确代码示例
# 定义Pet类 class Pet: def __init__(self, name, animal_type, age): self.__name = name self.__animal_type = animal_type self.__age = age # 设置器方法 def set_name(self, name): self.__name = name def set_animal_type(self, animal_type): self.__animal_type = animal_type def set_age(self, age): self.__age = age # 获取器方法 def get_name(self): return self.__name def get_animal_type(self): return self.__animal_type def get_age(self): return self.__age # 主程序 def main(): # 获取用户输入 name = input("请输入宠物名字:") animal_type = input("请输入宠物类型:") age = int(input("请输入宠物年龄:")) # 实例化Pet类 userpet = Pet(name, animal_type, age) # 展示宠物信息 print("\n你的宠物信息:") print(f"名字:{userpet.get_name()}") print(f"类型:{userpet.get_animal_type()}") print(f"年龄:{userpet.get_age()}") if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者user28288523
相关产品推荐
相关产品推荐

