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
なぜこのエラーが発生するのでしょうか? 混乱しています。
このエラーを解決するにはどうすればよいですか?
ベストアンサー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)