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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:57:17