> 백엔드 개발 > 파이썬 튜토리얼 > 내 Python 메소드에 'TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 제공되었습니다'가 표시되는 이유는 무엇입니까?

내 Python 메소드에 'TypeError: method()가 1개의 위치 인수를 사용하지만 2개가 제공되었습니다'가 표시되는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-13 15:27:10
원래의
516명이 탐색했습니다.

Why Does My Python Method Show

신비한 "메소드는 1개의 인수를 사용하지만 2개의 인수를 사용합니다" 오류 이해

Python에서 메서드를 호출하려고 하면 개발자는 "TypeError"라는 당황스러운 오류 메시지를 접할 수 있습니다. : method()는 1개의 위치 인수를 취하지만 2개가 주어졌습니다." 이 오류는 특히 하나의 인수만 메서드에 전달된 경우 혼란스러울 수 있습니다.

Python은 뒤에서 메서드 호출을 다음과 같이 해석합니다.

class_name.method(object, argument)
로그인 후 복사

이것은 메서드를 허용하는 메커니즘입니다. 자신이 행동하는 대상을 쉽게 작업할 수 있습니다. 메서드 정의에서 첫 번째 인수는 일반적으로 개체 인스턴스를 참조하는 self라는 이름이 지정됩니다.

다음 예를 고려하세요.

class MyClass:
    def method(self, arg):
        print(self)
        print(arg)

my_object = MyClass()
my_object.method("foo")
로그인 후 복사

실행되면 위 코드는 다음과 같이 변환됩니다.

MyClass.method(my_object, "foo")
로그인 후 복사

이는 메소드에 의해 명시적으로 하나만 전달되었음에도 불구하고 메소드가 두 개의 인수를 취하는 이유를 설명합니다. caller.

이러한 혼란을 완화하기 위해 개발자는 바인딩된 개체에 액세스할 필요가 없는 메서드에 staticmethod() 데코레이터를 사용할 수 있습니다. 이렇게 하면 메서드가 일반 함수처럼 동작하여 self 인수가 필요하지 않습니다.

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

my_other_object = MyOtherClass()
my_other_object.method("foo")
로그인 후 복사

요약하면 "Method Takes 1 Argument But 2 Give" 오류가 발생하면 Python에서 다음 점을 기억하세요. , 메소드는 일반적으로 연관된 객체인 추가 암시적 인수를 받습니다. 이 동작을 신중하게 고려하고 필요한 경우 데코레이터를 사용하면 혼란을 방지하고 코드를 간소화할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿