본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 081. NotImplementedError - must override abstract method in subclass

by about_IT 2025. 5. 30.
728x90

NotImplementedError: must override abstract method in subclass 오류는 추상 클래스 또는 인터페이스에서 정의된 메서드를 하위 클래스에서 구현하지 않았을 때 발생합니다. 이 오류는 특히 객체 지향 프로그래밍(OOP)에서 상속 구조를 사용할 때 자주 나타납니다.

파이썬에서는 abc 모듈의 ABC@abstractmethod를 사용하여 추상 메서드를 정의할 수 있으며, 이 경우 하위 클래스는 반드시 해당 메서드를 구현해야 합니다.

● 오류 발생 예시

from abc import ABC, abstractmethod

class Base(ABC):
    @abstractmethod
    def run(self):
        pass

class Child(Base):
    pass

Child().run()

Child 클래스가 run() 메서드를 구현하지 않았기 때문에 객체 생성 시 오류가 발생합니다.

TypeError: Can't instantiate abstract class Child with abstract method run

● 해결 방법

  • 모든 @abstractmethod를 하위 클래스에서 구현
  • 임시로 사용 시 raise NotImplementedError 명시
  • 직접 객체 생성을 시도하지 않고 추상 클래스를 상속만 사용

● 예시 코드 (정상 구현)

class Child(Base):
    def run(self):
        print("Child 클래스에서 run 메서드 구현")

● 자주 하는 실수

  • 추상 클래스 인스턴스를 직접 생성 시도
  • 추상 메서드를 하위 클래스에서 잊고 구현하지 않음
  • raise NotImplementedError를 정의만 해놓고 호출

● 결론

NotImplementedError - must override abstract method는 추상 메서드를 하위 클래스에서 구현하지 않을 때 발생합니다. OOP 설계 시 상속 구조를 명확히 이해하고, 반드시 필요한 메서드는 구현하도록 강제하는 것이 중요합니다.

728x90