Więcej
TypeError: 'moduł' obiekt nie jest wywoływalny
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
Dlaczego dostaję ten błąd? Jestem zdezorientowany.
Co musisz wiedzieć, aby odpowiedzieć na moje pytanie?
483
3
socket
jest modułem, zawierającym klasęsocket
.Musisz zrobić
socket.socket(...)
lubfrom socket import socket
:Zauważ, że błąd tutaj jest dość łatwy do zrozumienia: jeśli
obiekt modułu nie jest wywoływalny
, to prawdopodobnie wywołujesz obiekt modułu! Czym'jest obiekt modułu? Jest to typ rzeczy, którą otrzymujesz, gdy importujesz moduł.Ale nawet jeśli tego nie rozumiesz (co jest w porządku, często jest to mylące, że klasy, moduły, funkcje itp. są po prostu obiektami, jak wszystko inne), jest całkiem prosty sposób na rozpoczęcie debugowania:
moduł object is not callable
. Brzmi to tak, jakbym próbował wywołać coś, czego nie można wywołać. Zastanawiam się, co ja'próbuję wywołać?socket
. To powinno być callable! Zastanawiam się, czy zmiennasocket
jest tym, czym myślę, że jest?print socket
Wygląda na to, że to co zrobiłeś to zaimportowałeś moduł
socket
jakoimport socket
. Dlategosocket
jest tym modułem. Musisz albo zmienić tę linię naself.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
, jak również każde inne użycie modułusocket
, lub zmienić deklarację importu nafrom socket import socket
.Albo masz
import socket
po swoimfrom socket import *
:Wiem, że ten wątek ma już rok, ale prawdziwy problem jest w twoim katalogu roboczym.
Wierzę, że katalog roboczy to
C:\Użytkownicy \Administrator \Dokumenty \Mibot \. Proszę sprawdzić, czy w tym katalogu znajduje się plik o nazwie
socket.py. Gdy go znajdziesz, zmień nazwę lub przenieś go. Kiedy importujesz socket,
socket.pyz bieżącego katalogu jest używany zamiast
socket.py` z katalogu Pythona's. Mam nadzieję, że to pomogło :)Uwaga: Nigdy nie używaj nazw plików z katalogu Pythona'do zapisywania nazw plików Twojego programu' spowoduje to konflikt z Twoim programem(ami).