HOWTO · Python
Resolver TypeError: el objeto del módulo no se puede llamar en Python
Este tutorial demuestra qué significa Python TypeError: module object not callable, su causa y las formas de resolver este error.
En esta página
Cada lenguaje de programación encuentra muchos errores. Algunos ocurren en tiempo de compilación, otros en tiempo de ejecución.
Este artículo discutirá el TypeError: el objeto 'módulo' no se puede llamar. Este error surge cuando la clase/método y el módulo tienen los mismos nombres; nos confundimos entre ellos debido a los mismos nombres.
Cuando importamos un módulo, no un método, llamar a ese módulo dará el error porque el módulo no se puede llamar. Solo podemos llamar al método.
Causa del TypeError: el objeto 'módulo' no se puede llamar en Python
Importaremos un módulo incorporado, socket, en el siguiente código. Este módulo contiene además una clase llamada socket().
Aquí, el nombre del método y el nombre de la clase son los mismos. Si solo importamos el socket y lo llamamos, el intérprete arrojará un Error de tipo: el objeto 'módulo' no se puede llamar.
Código de ejemplo:
# Python 3.x
import socket
socket()
Producción :
#Python 3.x
Traceback (most recent call last):
File "<string>", line 2, in <module>
TypeError: 'module' object is not callable
También podemos enfrentarnos a este error en el caso de módulos personalizados que definimos nosotros mismos. Hemos creado el siguiente código y lo hemos guardado en un archivo llamado infomodule.py.
Código de ejemplo:
# Python 3.x
def infomodule():
info = "meeting at 10:00 am."
print(info)
Luego creamos otro archivo de Python y escribimos el siguiente código, llamando al módulo infomodule.py. Obtendremos el Error de tipo: el objeto 'módulo' no se puede llamar.
Código de ejemplo:
# Python 3.x
import infomodule
Print(infomodule())
Producción :
#Python 3.x
Traceback (most recent call last):
File "mycode.py", line 3, in <module>
print(infomodule())
TypeError: 'module' object is not callable
Resuelva el TypeError: el objeto 'módulo' no se puede llamar en Python
Llame al método/clase desde el módulo
Para corregir este error, podemos importar la clase desde el módulo en lugar de importar el módulo directamente. Arreglará el TypeError: el objeto del módulo no se puede llamar.
Aquí, creamos con éxito un objeto de la clase socket.
Código de ejemplo:
# Python 3.x
import socket
socket.socket()
Producción :
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
En el caso del módulo personalizado, podemos corregir el error de manera similar. Aquí, hemos llamado al método infomodule() del módulo infomodule.
Código de ejemplo:
import infomodule
print(infomodule.infomodule())
Producción :
meeting at 10:00 am.
Importar el método/clase desde el módulo
Otra forma de corregir este error es importar la clase del módulo y crear su objeto.
Aquí, importamos la clase socket del módulo socket y creamos su objeto.
Código de ejemplo:
# Python 3.x
from socket import socket
socket()
Producción :
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
También seguiremos el mismo procedimiento en el caso de módulos personalizados. Aquí, importamos el método del módulo y lo llamamos.
Código de ejemplo:
# Python 3.x
from infomodule import infomodule
print(infomodule())
Producción :
meeting at 10:00 am.