TypeError の解決: モジュール オブジェクトは Python で呼び出し可能ではありません

Fariba Laiq 2023年6月21日
  1. Python での TypeError: 'module' object is not callable の原因
  2. Python で TypeError: 'module' object is not callable を解決する
TypeError の解決: モジュール オブジェクトは Python で呼び出し可能ではありません

どのプログラミング言語でも、多くのエラーが発生します。 コンパイル時に発生するものもあれば、実行時に発生するものもあります。

この記事では、TypeError: 'module' object is not callable について説明します。 このエラーは、class/methodmodule が同じ名前の場合に発生します。 同じ名前のため、それらの間で混乱します。

メソッドではなくモジュールをインポートすると、そのモジュールを呼び出すとエラーが発生します。これは、モジュールが呼び出し可能でないためです。 メソッドを呼び出すことしかできません。

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.
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

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