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")
보시다시피 메서드에는 두 개의 인수가 필요합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!