类型错误:“模块”对象不可调用

新手上路,请多包涵
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
    self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable

为什么会出现此错误?我很困惑。

我该如何解决这个错误?

原文由 user551717 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 872
1 个回答

socket 是一个模块,包含类 socket

你需要做 socket.socket(...)from socket import socket

 >>> import socket
>>> socket
<module 'socket' from 'C:\Python27\lib\socket.pyc'>
>>> socket.socket
<class 'socket._socketobject'>
>>>
>>> from socket import socket
>>> socket
<class 'socket._socketobject'>

这是错误消息的含义:

它说 module object is not callable ,因为您的代码正在调用 模块 对象。模块对象是您导入模块时得到的东西的类型。您试图做的是在模块对象中调用一个 对象,该对象恰好与包含它的模块同名。

这是一种从逻辑上分解此类错误的方法:

  • module object is not callable 。Python 告诉我我的代码试图调用无法调用的东西。我的代码试图调用什么?”
  • “代码正在尝试调用 socket 。那应该是可调用的!变量 socket 是我认为的吗?`
  • 我应该打印出套接字是什么并检查 print(socket)

原文由 Katriel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题