python – TypeError: module object is not callable
python – TypeError: module object is not callable
socket
is a module, containing the class socket
.
You need to do socket.socket(...)
or from socket import socket
:
>>> import socket
>>> socket
<module socket from C:Python27libsocket.pyc>
>>> socket.socket
<class socket._socketobject>
>>>
>>> from socket import socket
>>> socket
<class socket._socketobject>
This is what the error message means:
It says module object is not callable
, because your code is calling a module object. A module object is the type of thing you get when you import a module. What you were trying to do is to call a class object within the module object that happens to have the same name as the module that contains it.
Here is a way to logically break down this sort of error:
module object is not callable
. Python is telling me my code trying to call something that cannot be called. What is my code trying to call?- The code is trying to call on
socket
. That should be callable! Is the variablesocket
is what I think it is?` - I should print out what socket is and check
print socket
Assume that the content of YourClass.py is:
class YourClass:
# ......
If you use:
from YourClassParentDir import YourClass # means YourClass.py
In this way, you will get TypeError: module object is not callable if you then tried to call YourClass()
.
But, if you use:
from YourClassParentDir.YourClass import YourClass # means Class YourClass
or use YourClass.YourClass()
, it works.
python – TypeError: module object is not callable
Add to the main __init__.py
in YourClassParentDir, e.g.:
from .YourClass import YourClass
Then, you will have an instance of your class ready when you import it into another script:
from YourClassParentDir import YourClass