TypeError の解決: モジュール オブジェクトは Python で呼び出し可能ではありません
-
Python での
TypeError: 'module' object is not callable
の原因 -
Python で
TypeError: 'module' object is not callable
を解決する
どのプログラミング言語でも、多くのエラーが発生します。 コンパイル時に発生するものもあれば、実行時に発生するものもあります。
この記事では、TypeError: 'module' object is not callable
について説明します。 このエラーは、class/method
と module
が同じ名前の場合に発生します。 同じ名前のため、それらの間で混乱します。
メソッドではなくモジュールをインポートすると、そのモジュールを呼び出すとエラーが発生します。これは、モジュールが呼び出し可能でないためです。 メソッドを呼び出すことしかできません。
Python での TypeError: 'module' object is not callable
の原因
次のコードでは、組み込みモジュール socket
をインポートします。 このモジュールにはさらに、socket()
という名前のクラスが含まれています。
ここでは、メソッド名とクラス名は同じです。 socket
のみをインポートして呼び出すと、インタープリターは TypeError: 'module' object is not callable
をスローします。
コード例:
# Python 3.x
import socket
socket()
出力:
#Python 3.x
Traceback (most recent call last):
File "<string>", line 2, in <module>
TypeError: 'module' object is not callable
自分で定義したカスタム モジュールの場合にも、このエラーに直面する可能性があります。 次のコードを作成し、infomodule.py
という名前のファイルに保存しました。
コード例:
# Python 3.x
def infomodule():
info = "meeting at 10:00 am."
print(info)
次に、別の Python ファイルを作成し、次のコードを記述して、モジュール infomodule.py
を呼び出します。 TypeError: 'module' object is not callable
が発生します。
コード例:
# Python 3.x
import infomodule
Print(infomodule())
出力:
#Python 3.x
Traceback (most recent call last):
File "mycode.py", line 3, in <module>
print(infomodule())
TypeError: 'module' object is not callable
Python で TypeError: 'module' object is not callable
を解決する
モジュールからメソッド/クラスを呼び出す
このエラーを修正するには、モジュールを直接インポートする代わりに、モジュールからクラスをインポートします。 TypeError : module object is not callable
を修正します。
ここで、クラス socket
のオブジェクトの作成に成功しました。
コード例:
# Python 3.x
import socket
socket.socket()
出力:
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
カスタムモジュールの場合、同様にエラーを修正できます。 ここでは、モジュール infomodule
のメソッド infomodule()
を呼び出しました。
コード例:
import infomodule
print(infomodule.infomodule())
出力:
meeting at 10:00 am.
モジュールからメソッド/クラスをインポートする
このエラーを修正する別の方法は、モジュールからクラスをインポートしてそのオブジェクトを作成することです。
ここでは、socket
モジュールからクラス socket
をインポートし、そのオブジェクトを作成しました。
コード例:
# Python 3.x
from socket import socket
socket()
出力:
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
カスタムモジュールの場合も同じ手順に従います。 ここでは、モジュールからメソッドをインポートして呼び出しました。
コード例:
# Python 3.x
from infomodule import infomodule
print(infomodule())
出力:
meeting at 10:00 am.
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません