一尘不染

TypeError:“模块”对象不可调用

python

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

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

你需要知道什么才能回答我的问题?


阅读 922

收藏
2020-02-20

共1个答案

一尘不染

socket是一个包含class的模块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 callablePython告诉我我的代码试图调用无法调用的内容。我的代码试图调用什么?”
  • “代码正在尝试调用socket。应该可以调用!变量socket是我认为的吗?”
  • 我应该打印出什么是插座并检查 print socket
2020-02-20