繁体   English   中英

TypeError: 'module' object 不可调用 - 导入错误?

[英]TypeError: 'module' object is not callable - import error?

我正在为我创建的两个 class 程序创建一个驱动程序文件。 我有一个名为 Inventory 的 class:

class Inventory:
    
    def __init__(self):
        self.inventory = []
    
    def addItem(self,id,name,amt,cost):
        addingItem = Item(pn,id,name,amt,cost)
        self.inventory.append(addingItem)

和一个 class 项目:

class Item:
    
    def __init__(self,id=0,name="",amt=0,cost=0.0):
        self.itemNo = id
        self.itemName = name
        self.quantity = amt
        self.price = cost

我创建了一个驱动程序文件来测试它并玩弄:

item1 = Item.Item(0,"Hat", 14, 10.00)
item2 = Item.Item(1,"Socks", 40, 8.00)
    
    
list = Inventory.Inventory()
   
list.addItem(0, "Hat", 14, 10.00)
list.addItem(1, "Socks", 40, 8.00)

我收到一个错误:

TypeError: 'module' object is not callable

它指向

addingItem = Item(pn,id,name,amt,cost)

在我的库存 class 中。 导入时我做错了什么吗? 是否可以通过不在我的任何一个类中编辑和编码从而仅在我的驱动程序中进行更改来修复此错误?

  • 您应该直接导入您的类:

     from Item import Item # Assuming the file name is Item.py from Inventory import Inventory # Assuming the file name is Inventory.py

    然后你可以这样做:

     item1 = Item(0,"Hat", 14, 10.00)
  • 然后你在Inventory class 中使用Item ,但你没有在那里导入Item 小心并以与from x import y相同的方式导入它。

  • 此外,您在该行中有一个错误:

     addingItem = Item(pn,id,name,amt,cost)

    什么是pn 删除它,它应该可以工作:

     addingItem = Item(id,name,amt,cost)
  • 还要避免使用保留名称,如listid ecc ...您可能会遇到问题。

此错误语句 TypeError: 'module' object is not callable 被提出,因为您对 Class 名称和模块名称感到困惑。 问题出在导入行。 您正在导入一个模块,而不是 class。 发生这种情况是因为模块名称和 class 名称具有相同的名称。 如果您在名为 MyClass.py 的文件中有 class MyClass,那么您应该编写:

from YourClass import YourClass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM