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
v
、g,
、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つのパラメーターを受け入れます。
たとえば、x
が 42
に等しい変数がある場合、この変数はメモリ内の整数を参照します。 x
を callable()
関数に渡し、結果をすぐに出力して、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
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
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません