프로그래밍언어/파이썬[Error]
[파이썬][Error] 050. TypeError - unbound method must be called with instance as first argument
about_IT
2025. 5. 28. 23:43
728x90
TypeError: unbound method must be called with instance as first argument
오류는 클래스 내부의 메서드를 인스턴스를 생성하지 않고 호출하려 할 때 발생합니다. 이 오류는 파이썬 2에서 주로 나타나는 현상이지만, 파이썬 3에서는 구조적으로 클래스 메서드와 인스턴스 메서드가 분리되어 있어 발생 빈도가 줄어들었습니다.
이 오류는 일반적으로 클래스 내부의 메서드를 객체 없이 직접 호출하면서 self 인자가 누락되었을 때 발생합니다. 객체 지향 프로그래밍의 기본 구조인 '인스턴스.메서드()' 형태가 아닌 경우입니다.
● 오류 발생 예시
class MyClass:
def greet(self):
print("Hello")
MyClass.greet()
이 코드는 인스턴스를 생성하지 않고 greet()
를 호출하기 때문에 self 인자가 전달되지 않아 오류가 발생합니다.
TypeError: greet() missing 1 required positional argument: 'self'
● 해결 방법
- 인스턴스를 생성한 후 메서드를 호출
- 또는
@staticmethod
또는@classmethod
로 정의
● 올바른 코드 예시
class MyClass:
def greet(self):
print("Hello")
obj = MyClass()
obj.greet() # 정상 출력: Hello
# 또는 정적 메서드로 정의
class MyClass:
@staticmethod
def greet():
print("Hello")
MyClass.greet() # 정상 출력: Hello
● 자주 하는 실수
- 인스턴스 생성 없이 인스턴스 메서드를 호출
- self 인자를 빠뜨린 채 메서드를 정의 또는 호출
- 정적/클래스 메서드와 인스턴스 메서드의 구분 실수
● 결론
TypeError - unbound method must be called with instance as first argument
오류는 클래스의 인스턴스를 만들지 않고 인스턴스 메서드를 호출할 때 발생합니다. 항상 객체를 생성하고 메서드를 호출하거나, 메서드를 @staticmethod
또는 @classmethod
로 지정해야 오류를 피할 수 있습니다.
728x90