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
Porque é que estou a receber este erro? I'estou confuso.
O que você precisa saber para responder a minha pergunta?
O socket
é um módulo, contendo a classe socket
.
Você precisa fazer socket.socket(....)
ou de soquete de importação de soquete
:
>>> import socket
>>> socket
<module 'socket' from 'C:\Python27\lib\socket.pyc'>
>>> socket.socket
<class 'socket._socketobject'>
>>>
>>> from socket import socket
>>> socket
<class 'socket._socketobject'>
Note que o erro aqui é bastante fácil de entender: se objeto módulo não é chamável
, você provavelmente está chamando um objeto módulo! O que'é um objeto módulo? It'é o tipo de coisa que você obtém quando importa um módulo.
Mas mesmo que você não'não entenda isso (o que é bom, é's muitas vezes confundindo que classes, módulos, funções etc. são todos apenas objetos como tudo mais), lá's é uma maneira bem fácil de começar a depurar:
objeto modulo não é chamável
. Isso soa como I'estou tentando chamar algo que você pode't chamar. Pergunto-me o que eu'estou a tentar chamar?"socket
é o que eu penso que é?``.Parece que o que você've fez é importar o módulo socket
como import socket
. Portanto, o socket
é o módulo. Você precisa mudar essa linha para self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
, assim como qualquer outra utilização do módulo socket
, ou mudar a instrução de importação para `from socket import socket'.
Ou você'tem um "socket de importação" após a sua "importação do socket *":
>>> from socket import *
>>> serv = socket(AF_INET,SOCK_STREAM)
>>> import socket
>>> serv = socket(AF_INET,SOCK_STREAM)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'module' object is not callable
Eu sei que este tópico tem um ano, mas o verdadeiro problema está no seu directório de trabalho.
Acredito que o diretório de trabalho é "C:{C:}UsuáriosAdministrador
DocumentosMibot
oops. Por favor, verifique o arquivo chamado
socket.pyneste diretório. Assim que o encontrar, renomeie ou mova-o. Quando você importa o socket,
socket.pydo diretório atual é utilizado ao invés do
socket.py` do diretório Python's. Espero que isto tenha ajudado. :)
Nota: Nunca use os nomes dos arquivos do diretório Python's para salvar seu programa's; isso irá conflitar com o(s) seu(s) programa(s).