Python TypeError: 필수 위치 인수 1개 누락

Manav Narula 2023년6월21일
  1. Python에서 개체를 인스턴스화하지 않음
  2. 파이썬에서 클래스 객체를 잘못 인스턴스화하기
  3. Python에서 TypeError: missing 1 required positional argument: 'self' 오류 수정
  4. 결론
Python TypeError: 필수 위치 인수 1개 누락

클래스는 객체 지향 프로그래밍 언어의 기본 기능 중 하나입니다. 모든 객체는 Python의 일부 클래스에 속합니다.

같은 유형의 개체를 만들기 위한 청사진으로 클래스를 만들 수 있습니다. class 키워드를 사용하여 Python에서 클래스를 정의합니다.

Python에서 매우 중요한 기능은 클래스를 정의하는 동안 self 특성을 사용하는 것입니다. self 속성은 개체의 데이터를 나타내며 인수를 개체에 바인딩합니다.

이 튜토리얼에서는 Python의 TypeError: missing 1 required positional argument: 'self' 오류와 이를 해결하는 방법에 대해 설명합니다.

이 오류가 발생하는 상황에 대해 논의해 보겠습니다.

Python에서 개체를 인스턴스화하지 않음

위치 인수는 함수에 제공하는 데이터를 나타냅니다. 클래스 객체를 생성하기 위해 생성자를 사용합니다.

클래스에 데이터가 필요한 경우 생성자 함수에서 인수로 전달해야 합니다.

이 오류는 클래스 객체를 인스턴스화하는 것을 잊었거나 클래스 인스턴스를 잘못 인스턴스화했을 때 발생합니다.

아래 코드를 참조하십시오.

class Delft:
    def __init__(self, name):
        self.name = name

    def fun(self):
        return self.name


m = Delft.fun()
print(m)

출력:

TypeError: fun() missing 1 required positional argument: 'self'

위의 예에서 클래스의 인스턴스를 인스턴스화하는 것을 잊고 클래스의 기능에 액세스하려고 시도했기 때문에 오류가 발생했습니다. 결과적으로 self 속성이 정의되지 않고 속성을 오브젝트에 바인드할 수 없습니다.

이것은 주어진 데이터 유형에 대해 지원되지 않는 일부 작업을 수행하는 동안 Python에서 발생하는 TypeError입니다. 인스턴스를 생성하지 않고 클래스 메서드에 직접 액세스하는 것은 지원되지 않습니다.

파이썬에서 클래스 객체를 잘못 인스턴스화하기

이 오류가 발생할 수 있는 또 다른 시나리오는 클래스 개체를 잘못 인스턴스화하는 경우입니다. 이것은 괄호를 무시하거나 인수를 제공하지 않는 것과 같은 작은 입력 오류일 수 있습니다.

예를 들어:

class Delft:
    def __init__(self, name):
        self.name = name

    def fun(self):
        return self.name


m = Delft
a = m.fun()
print(a)

출력:

TypeError: fun() missing 1 required positional argument: 'self'

이제 아래 섹션에서 이 오류를 수정하는 방법에 대해 논의하겠습니다.

Python에서 TypeError: missing 1 required positional argument: 'self' 오류 수정

이 오류를 수정하기 위해 클래스 인스턴스를 생성하고 이를 사용하여 클래스 메서드에 액세스할 수 있습니다.

아래 코드를 참조하십시오.

class Delft:
    def __init__(self, name):
        self.name = name

    def fun(self):
        return self.name


m = Delft("Stack")
a = m.fun()
print(a)

출력:

Stack

예제에서는 먼저 클래스의 인스턴스를 만듭니다. 그런 다음 클래스 메서드에 액세스하여 일부 값을 반환하고 인쇄하는 데 사용됩니다. 오류가 수정되었습니다.

또 다른 수정 사항은 정적 메서드를 사용하는 것입니다. 정적 메서드는 개체가 아닌 특정 클래스에 바인딩된 함수입니다.

@staticmethod 데코레이터를 사용하여 이러한 메소드를 만들 수 있습니다.

예를 들어:

class Delft:
    def __init__(self, name):
        self.name = name

    @staticmethod
    def fun(abc):
        return abc


a = Delft.fun("Stack")
print(a)

출력:

Stack

위의 예에서 fun() 함수를 정적 함수로 변경했습니다. 이렇게 하면 클래스 개체를 인스턴스화하지 않고 사용할 수 있습니다.

결론

이 튜토리얼에서는 Python의 TypeError: missing 1 required positional argument: 'self' 오류와 이를 해결하는 방법에 대해 설명했습니다.

이 오류가 발생할 수 있는 상황과 클래스의 개체를 인스턴스화하여 오류를 수정하는 방법에 대해 논의했습니다. 정적 메서드를 사용하여 이 오류를 해결할 수도 있습니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python TypeError

관련 문장 - Python Error