TypeError: 'module' オブジェクトは呼び出し可能ではありません 質問する

TypeError: 'module' オブジェクトは呼び出し可能ではありません 質問する
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)

おすすめ記事