>백엔드 개발 >파이썬 튜토리얼 >내 Python 메서드에서 'TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 주어졌습니다.' 오류가 발생하는 이유는 무엇입니까?

내 Python 메서드에서 'TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 주어졌습니다.' 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 04:00:14747검색

Why Does My Python Method Throw a

Python 메서드에서 인수 구조 분해: "TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 제공됨"을 풀 때 Enigma

시도할 때 Python에서 클래스 메서드를 호출하려면 "TypeError: method()가 1개의 위치 인수를 사용하지만 인수가 하나만 전달된 것처럼 보임에도 불구하고 2개 주어짐" 오류가 발생했습니다. 이 수수께끼를 풀기 위해 Python 메소드의 동작과 인수 분해의 개념을 자세히 살펴보겠습니다.

Python에서 클래스 메소드는 일부 프로그래밍 언어의 메소드와 다르게 작동합니다. 클래스 메서드를 호출할 때 클래스 정의 내의 메서드 시그니처는 self 인수를 포함하여 예상되는 매개 변수 수를 정의합니다.

제공된 코드 조각에서:

class MyClass:

    def method(arg):
        print(arg)

메서드는 다음을 기대합니다. 호출자의 관점에서 my_object.method("foo")로 전달되는 단일 인수입니다. 그러나 Python은 메서드가 실행되기 전에 뒤에서 일부 구문 구조 분해를 수행합니다. 호출자의 구문을 다음으로 변환합니다.

MyClass.method(my_object, "foo")

보시다시피 메서드에는 두 개의 인수가 필요합니다.

  • my_object는 메서드가 호출되는 인스턴스를 나타냅니다. .
  • arg는 호출자가 제공한 인수를 수신하며, 이 경우에는 "foo".

Python은 자동으로 객체 자체인 첫 번째 인수를 메서드에 제공합니다. 이것이 호출자가 추가 인수를 전달하려고 시도하여 총 2개의 인수가 생성될 때 오류 메시지를 수신하는 이유입니다.

자신이 속한 인스턴스에 액세스해야 하는 메소드의 경우 self 인수가 필수적입니다. . 이를 통해 메서드가 인스턴스별 데이터와 상호 작용하거나 개체 상태와 관련된 작업을 수행할 수 있습니다.

인스턴스에 대한 액세스가 필요하지 않은 경우를 처리하기 위해 Python은 @staticmethod 데코레이터를 제공합니다. 이 데코레이터는 self 인수의 암시적 전달을 억제합니다.

제공된 코드 조각에 설명된 대로:

class MyOtherClass:

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

my_other_object = MyOtherClass()
my_other_object.method("foo")

MyOtherClass의 메서드는 인스턴스에 대한 액세스가 필요하지 않으므로 다음을 수행할 수 있습니다. 자체 인수를 전달하지 않고 호출하세요.

이러한 유형의 오류를 해결하려면 클래스 메서드와 인수 분해의 동작을 이해하는 것이 중요합니다. Python으로 강력한 코드를 작성합니다.

위 내용은 내 Python 메서드에서 'TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 주어졌습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.