ホームページ >バックエンド開発 >Python チュートリアル >明示的な引数が 1 つあるにもかかわらず、「TypeError:method() は位置引数を 1 つとりますが、2 つが与えられました」が発生するのはなぜですか?

明示的な引数が 1 つあるにもかかわらず、「TypeError:method() は位置引数を 1 つとりますが、2 つが与えられました」が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 13:25:10579ブラウズ

Why Does

「TypeError:method() は位置引数を 1 つとりますが、2 つが与えられました」で引数が 1 つだけ渡されました

エラー「TypeError」が発生した場合:method() は 1 つの位置引数を受け取りますが、2 つが与えられました」引数を 1 つだけ渡しているにもかかわらず、Python のメソッド呼び出しを理解することが重要です

Python では、メソッド呼び出しはより冗長な構文の糖衣構文です。オブジェクトのメソッドを呼び出す場合、言語は呼び出しをより明示的な形式に変換し、オブジェクトがメソッドの最初の引数になります。

たとえば、次の呼び出し:

my_object.method("foo")

は舞台裏で次のように変換されます:

MyClass.method(my_object, "foo")

ここで、最初の引数 (my_object) はメソッド定義内の self パラメーターと呼ばれます。このパラメータは、メソッドが呼び出されるオブジェクトを表します。

ほとんどの場合、メソッドは呼び出されるオブジェクトにアクセスする必要があります。ただし、場合によっては、バインドされているオブジェクトに依存しないメソッドが必要になる場合があります。このような場合、Python の staticmethod() 関数を使用してメソッドを修飾できます。

class MyOtherClass:

    @staticmethod
    def method(arg):
        print(arg)

staticmethod() でメソッドを修飾すると、self パラメータが不要になり、メソッドを参照せずに直接呼び出すことができます。オブジェクト:

my_other_object.method("foo")

これにより、発生したエラーで 2 つの引数が指定されたことが示されている理由が明確になります。 Python は、メソッドを呼び出しているオブジェクト (元の例では my_object など) を暗黙的な最初の引数として解釈し、合計 2 つの引数が渡されることになります。

以上が明示的な引数が 1 つあるにもかかわらず、「TypeError:method() は位置引数を 1 つとりますが、2 つが与えられました」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。