Python エラー: オブジェクトは呼び出し可能ではありません

Salman Mehmood 2023年6月21日
  1. Python エラー object is not callable を修正
  2. Python の callable() 関数
Python エラー: オブジェクトは呼び出し可能ではありません

型エラー object is not callable について説明し、それを修正する方法を見ていきます。 また、callable 関数を使用して、Python でオブジェクトが呼び出し可能かどうかを確認する方法についても説明します。

Python エラー object is not callable を修正

このエラー (object is not callable) を見ると、おそらく Python スクリプト内で何が起こっているのかを理解する必要があります。 たとえば、問題とその修正方法を示す数行のコードがあります。

エラーコード:

v = 5
g = 9
int = 3

print(int(g / v * int))

出力:

TypeError: 'int' object is not callable

vg,int の 3つの変数があります。 関数である int という変数を定義したため、この問題が発生しています。

int は Python の組み込み関数であるため、int を変数名として使用することはできません。 したがって、Python スクリプトが実行されると、変数名 int を呼び出そうとします。 int の種類は Python 内で制限された名前であり、その結果、変数として使用するとこのエラーが表示されます。

変数名を変更してこのスクリプトを再度実行することで、エラーを修正しました。

固定コード:

v = 5
g = 9
d = 3

print(int(g / v * d))

出力:

5

Python スクリプト内で関数を使用してプログラムを実行する場合、同じ問題に直面するため、その関数を変数名として使用しないでください。 文字列、フロートなどでも同じ問題が発生します。

このエラーが発生した場合は、まず、変数のいずれかが関数名を呼び出しているかどうかを確認する必要があります。 次のコード例のように、データ型の値を格納する変数を呼び出すことはできません。

エラーコード:

x = "josh"
x()

出力:

TypeError: 'str' object is not callable

Python の callable() 関数

オブジェクトを関数のように呼び出すことができる場合、callable() 関数は True を返し、任意のオブジェクトである 1つのパラメーターを受け入れます。

たとえば、x42 に等しい変数がある場合、この変数はメモリ内の整数を参照します。 xcallable() 関数に渡し、結果をすぐに出力して、true または false 値を返すかどうかを確認できます。

これを実行すると、整数 42 は呼び出し可能でないため、戻り値は false になります。

コード例:

x = 42
print(callable(x))

出力:

False

callable() 関数が自分自身を呼び出すとどうなるか見てみましょう。 callable() 関数内に callable と入力し、これを出力します。 結果が True であることがわかります。また、明らかに呼び出し可能な print 関数を渡すこともできます。

print(callable(callable))
print(callable(print))

出力:

True
True

呼び出し可能かどうかに関係なく、組み込みオブジェクトではなく、カスタム オブジェクトを定義するとします。 何かを返す FUNC() という関数を作成しましょう。

この関数名を callable() 関数に渡し、出力を出力します。これは呼び出し可能です。 FUNC() を使用して戻り値を呼び出すと、それは整数になり、それを callable() 関数に渡します。 出力は False を返しますが、これは既に調べた整数を呼び出すことができないため、呼び出し可能ではありません。

例:

def FUNC():
    return 51


print(callable(FUNC))
print(callable(FUNC()))

出力:

True
False
著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Python Error