스택큐힙리스트

왜 "TypeError: 필수 위치 인수가 누락되었습니다: 'self'" 오류가 발생하나요? 본문

카테고리 없음

왜 "TypeError: 필수 위치 인수가 누락되었습니다: 'self'" 오류가 발생하나요?

스택큐힙리스트 2023. 11. 26. 18:47
반응형

저는 다음과 같은 코드를 가지고 있습니다:


class Pump:    
def __init__(self):
print(init)
def getPumps(self):
pass
p = Pump.getPumps()
print(p)

하지만 다음과 같은 오류가 발생합니다:


Traceback (most recent call last):
File C:\Users\Dom\Desktop\test\test.py, line 7, in <module>
p = Pump.getPumps()
TypeError: getPumps() missing 1 required positional argument: 'self'

__init__ 함수가 호출되지 않는 것일까요? 그리고 이 예외가 무엇을 의미하는 걸까요? 제 이해에 따르면 self가 생성자와 메소드에 자동으로 전달된다고 알고 있습니다. 여기서 무슨 실수를 하고 있는 걸까요?

답변 1

클래스를 사용하려면 먼저 다음과 같이 인스턴스를 생성하십시오:


p = Pump()
p.getPumps()

전체 예제:


>>> class TestClass:
... def __init__(self):
... print(init)
... def testFunc(self):
... print(Test Func)
...
>>> testInstance = TestClass()
init
>>> testInstance.testFunc()
Test Func

답변 2

TypeError: Missing 1 required positional argument: 'self'를 왜 받게 되는지 알려드리겠습니다.
자바스크립트나 파이썬과 같은 객체 지향 언어에서 self는 해당 객체를 참조하는 키워드입니다. 클래스 내에서 메서드를 정의할 때, 첫 번째 매개변수로 항상 self를 사용해야 합니다. 이를 통해 메서드가 해당 객체 자체에 접근할 수 있도록 합니다.
TypeError는 일반적으로 잘못된 인수를 전달하여 함수가 호출되지 않을 때 발생하는 오류입니다. TypeError: Missing 1 required positional argument: 'self' 오류는 self를 전달하지 않고 객체의 메서드를 호출한 경우에 발생합니다.
다시 말해, self 인자가 메서드 호출 시 자동으로 전달되지 않았기 때문에 오류가 발생한 것입니다. 따라서 해당 메서드를 호출할 때, 해당 객체 자체를 self 인자로 전달해주어야 합니다.
이 오류를 해결하기 위해서는 아래와 같은 방법들을 사용할 수 있습니다:
1. 해당 메서드를 호출할 때, 객체 자체를 self 인자로 전달합니다.
2. 객체를 인스턴스화할 때, 해당 메서드를 호출하는 코드를 추가합니다.
3. 클래스 정의 시, 메서드에 self 인자를 추가합니다.
이와 같은 방법들을 통해 메서드를 올바르게 호출하여 TypeError: Missing 1 required positional argument: 'self' 오류를 해결할 수 있습니다.

반응형
Comments