Python エラーを解決する方法: TypeError: 'xxx' object is not callable?

WBOY
リリース: 2023-08-19 10:00:45
オリジナル
6776 人が閲覧しました

如何解决Python报错:TypeError: \'xxx\' object is not callable?

Python エラーを解決する方法: TypeError: 'xxx' object is not callable?

Python プログラミングの分野では、エラーが頻繁に発生します。一般的なエラーの 1 つは、TypeError: 'xxx' object is not callable です。このエラーは、オブジェクトが現在のコードで使用されているが、それが関数として呼び出されているにもかかわらず、実際にはオブジェクトを呼び出すことができないことを意味します。この問題をより深く理解し、解決できるように、このエラーの原因、特定および修正方法、およびいくつかのコード例を詳しく説明します。

まず、具体的なコード例を見てみましょう:

class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1())  # 报错发生在这一行
ログイン後にコピー

上記のコードは、初期化メソッド __init__ と x を出力するためのメソッド print_x を持つクラス MyClass を定義します。メイン プログラムでは、このクラスの 2 つのオブジェクト obj1 と obj2 を作成し、obj1 を呼び出そうとしましたが、「TypeError: 'MyClass' object is not callable」エラーが発生しました。

まず、このエラーを解決するには、エラーの原因を明らかにする必要があります。 TypeError: 'xxx' object is not callable は通常、呼び出し不可能なオブジェクトを呼び出そうとしていることを意味します。上記のコード例では、オブジェクト obj1 を呼び出そうとしましたが、このオブジェクトは MyClass クラスのインスタンスであり、呼び出すように設計されていません。したがって、Python はこのエラーをスローします。

このエラーの原因がわかったので、次のステップはそれを特定して修正する方法です。よくある状況がいくつかあります。

  1. クラスのインスタンスの誤った使用: 上記のコード例では、オブジェクト obj1 を呼び出そうとしていますが、実際にはオブジェクトが属するクラスのメソッドが呼び出されています。と呼ばれるはずです。したがって、上記のコードを obj1.print_x() に変更できます。
class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

obj1.print_x()  # 输出10
ログイン後にコピー
  1. 変数名と関数名を誤って混同する: もう 1 つのよくある状況は、クラス メソッドの名前とインスタンス変数の名前を混同し、その結果、インスタンス変数を誤って関数として呼び出すことです。 。たとえば、次のコードは TypeError: 'int' object is not callable エラーを引き起こします。
class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.x())  # 报错发生在这一行
ログイン後にコピー

この問題を解決するには、変数名と関数名を分離するようにコードを変更する必要があります。

class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.x)  # 输出10
ログイン後にコピー

最後に、このエラーをよりよく理解し回避するために、次のようにします。別のコード例を示します。

def add(a, b):
    return a + b

result = add(3, 5)
print(result())

# 报错的原因是result是一个int类型的变量,而不是函数
ログイン後にコピー

ここでは、2 つのパラメーターを受け取り、その合計を返す add 関数を定義します。次に、add(3, 5) の結果を result に代入し、result() を出力しようとします。ただし、「TypeError: 'int' object is not callable」エラーが発生しました。この問題を解決するには、括弧を削除するだけです。

def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出8
ログイン後にコピー

上記のコード例を通じて、一般的な Python エラー「TypeError: 'xxx' object is not callable」を誰もが効果的に理解し、解決できるようにしたいと考えています。このエラーが発生した場合は、コードに上記の問題が存在するかどうかを確認し、同様のエラーが発生しないようにコードを適切に調整してください。

以上がPython エラーを解決する方法: TypeError: 'xxx' object is not callable?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート