프로그래밍언어/파이썬[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