TypeError: 'module' Objekt ist nicht aufrufbar

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

Warum bekomme ich diese Fehlermeldung? Ich bin verwirrt.

Was müssen Sie wissen, um meine Frage zu beantworten?

socket ist ein Modul, das die Klasse socket enthält.

Sie muessen socket.socket(...) oder from socket import socket machen:

>>> import socket
>>> socket

>>> socket.socket

>>>
>>> from socket import socket
>>> socket

Beachten Sie, dass der Fehler hier ziemlich einfach zu verstehen ist: Wenn module object is not callable, rufen Sie wahrscheinlich ein Modul-Objekt auf! Was'ist ein Modulobjekt? Es ist die Art von Objekt, die man erhält, wenn man ein Modul importiert.

Aber selbst wenn Sie das nicht verstehen (was in Ordnung ist, es ist oft verwirrend, dass Klassen, Module, Funktionen usw. einfach nur Objekte sind, wie alles andere auch), gibt es eine ziemlich einfache Möglichkeit, mit der Fehlersuche zu beginnen:

  • "Hmm, Modulobjekt ist nicht aufrufbar. Das hört sich so an, als würde ich versuchen, etwas aufzurufen, das nicht aufrufbar ist. Ich frage mich, was ich versuche, aufzurufen?"
  • "Oh, ich'rufe socket auf. Das sollte aufrufbar sein! Ich frage mich, ob die Variable socket das ist, wofür ich sie halte?`
  • print socket
Kommentare (8)

Es scheint, als ob Sie das Modul socket als import socket importiert haben. Daher ist socket das Modul. Sie muessen entweder diese Zeile in self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) aendern, ebenso wie jede andere Verwendung des socket-Moduls, oder die Import-Anweisung in from socket import socket aendern.

Oder Sie haben ein import socket nach Ihrem from socket import *:

>>> 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 
TypeError: 'module' object is not callable
Kommentare (4)

Ich weiß, dass dieser Thread schon ein Jahr alt ist, aber das eigentliche Problem liegt in Ihrem Arbeitsverzeichnis.

Ich glaube, das Arbeitsverzeichnis ist C:\Benutzer\Administrator\Dokumente\Mibot\oops\. Bitte suchen Sie in diesem Verzeichnis nach der Datei socket.py. Wenn Sie sie gefunden haben, benennen Sie sie um oder verschieben Sie sie. Wenn Sie socket importieren, wird socket.py aus dem aktuellen Verzeichnis anstelle von socket.py aus dem Python-Verzeichnis verwendet. Ich hoffe, das hat geholfen :)

Hinweis: Verwenden Sie niemals die Dateinamen aus dem Python's-Verzeichnis, um den Dateinamen Ihres Programms's zu speichern; es wird zu Konflikten mit Ihrem Programm (s).

Kommentare (1)